Мне нужно очистить страницу, сайт следующий: https://commercialisti.it/iscritti Он только на итальянском языке, но тем не менее это список профессиональных людей, которых я могу найти через «Шапку».
Например, если заполнить шапку значением 37138 и затем нажать «CERCA», отобразится список специалистов с небольшим количеством данных. Я обнаружил, что если я проверю страницу, зайду в сеть, то на элементе LstIscritti?_=1713434471262
появится JSON со всеми необходимыми мне данными.
Проблема в том, что я не понимаю, как парсить, зайдя в этот раздел сайта.
Я пробовал с beautifulsoup, но мне удалось очистить только HTML-код главной страницы.
Мой код на данный момент:
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://commercialisti.it/iscritti')
driver.implicitly_wait(10)
driver.switch_to.frame(driver.find_element(By.XPATH, "(//iframe)[1]"))
casella_testo = driver.find_element("id", "Cap")
casella_testo.send_keys("37138")
pulsante_cerca = driver.find_element("id", 'btnContinua')
pulsante_cerca.click()
time.sleep(5)
res = driver.find_element("id", "listIscritti")
time.sleep(10)
Содержимое res
— это очищенная таблица, отображаемая на странице после нажатия кнопки «CERCA», но мне нужны детали, которые находятся в разделе «Сеть».
мне нужно очистить страницу
Я рекомендую использовать запросы вместо селена, поскольку вырезание браузера делает это немного проще.
Похоже, что нажатие этой первой кнопки отправляет запрос, который возвращает некоторые файлы cookie сеанса.
После этого вам будет разрешено сделать второй запрос данных.
import requests
import time
# Request search
r = requests.get("https://ricerca.commercialisti.it/RicercaIscritti",
params = {
"search": "True",
"ente": "00000000-0000-0000-0000-000000000000",
"cap": 37138,
"sezione": 0
})
# Copy session cookies from the request
cookies = r.cookies
# Make a request for the data
r = requests.post("https://ricerca.commercialisti.it/RicercaIscritti/LstIscritti",
params = {
"_": int(time.time()*1000)
},
allow_redirects=False,
cookies=cookies)
# Parse data in bs4 for later use
data = r.json()
# View data
import json
print(json.dumps(data, indent=4))
И результат выглядит так:
[
{
"Id": "ee5bb9f7-b3c1-47ae-9bcb-41e27d25177a",
"Nome": "BARBARA",
"Cognome": "AGNELLI",
"Ente": "Verona",
"Comune": "NEGRAR",
"UpdateDate": "2024-03-28T16:08:22.883",
"Archived": false,
"Radiato": false,
"TotalRecords": 176,
"Sezione": 0,
"ComuneNascita": "VERONA",
"DataNascita": "09/09/1971",
"Sospeso": false,
"Studio": "<i class=\"fa fa-map-marker\"></i> Via Garibba 2 37138 Verona (VR) <i class=\"fa fa-phone\"></i> 045568147 <i class=\"fa fa-fax\"></i> 045565677 <br/>",
"IdSoggetto": 63936,
"UrlIscritto": "/RicercaIscritti/Scheda/ee5bb9f7-b3c1-47ae-9bcb-41e27d25177a"
},
...
]
Вы можете использовать консоль разработчика в любом браузере или внешний прокси-сервер веб-отладки, например:Charles
, Burp Suite
, mitmproxy
и т. д.
Чтобы узнать, как воссоздать запросы, которые делают браузеры.