Я пытаюсь получить таблицу со страницы .aspx. Это "https://www.mevzuat.gov.tr/p_KulliyatFihrist.aspx". Я попробовал это и посмотрел на это вопросы, прежде чем задавать. Первый был решен без модуля запросов, а второй не записан в python, а также использует библиотеку селена, которая не подходит для запросов.
Итак, позвольте мне объяснить, что я сделал: я импортировал Сеанс из модуля запросов:
from requests import Session
s = Session()
URL = "https://www.mevzuat.gov.tr/p_KulliyatFihrist.aspx"
firstGET = s.get(URL)
После этого я получил viewstate и другие элементы динамической c полезной нагрузки, например:
firstGETsoup = BeautifulSoup(firstGET.text,"html.parser")
# parse and retrieve two vital form values
viewstate = firstGETsoup.select("#__VIEWSTATE")[0]['value']
viewstategenerator = firstGETsoup.select("#__VIEWSTATEGENERATOR")[0]['value']
eventvalidation = firstGETsoup.select("#__EVENTVALIDATION")[0]['value']
После получения этих значений я создал заголовки и словари полезной нагрузки:
headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0"}
payload = {
"__EVENTTARGET":"ctl00$Body$LinkButton2",
"__EVENTARGUMENT":"",
"__LASTFOCUS":"",
"__VIEWSTATE":viewstate,
"__VIEWSTATEGENERATOR": viewstategenerator,
"__EVENTVALIDATION":eventvalidation,
"ctl00$Body$ddlSeachCriteria":"11", ## This criteria chooses period of time
"ctl00$Body$txtCriteria":"01.01.2000", ## Beginning of period
"ctl00$Body$txtCriteria1":"24.02.2020"} ## End of the period
Как вы можете видеть четыре элемента ctl00, определенные мной для выполнения поиска между двумя датами , Этот поиск дает 10 сообщений на странице таблицы результатов. Формат дат поступает непосредственно с сетевого монитора Mozilla Firefox, поэтому, я полагаю, он не может ошибаться.
Наконец я отправил запрос на сообщение:
post = s.post(URL, data= payload, headers=headers)
После отправки запроса на отправку я отправил запрос на получение таблицы со страницы aspx:
secondGET = s.get(URL)
Идентификатор div, который включает таблицу, это panelGrid, поэтому я создал "суп" и искал его :
secondGETsoup = BeautifulSoup(secondGET.text,"html.parser")
g = soup.find_all('table', id='gv')
print(g)
Но согласно приведенному выше коду, "g" ничего не возвращает: []
Как я могу решить эту проблему? Другими словами: как я могу отправить запрос POST с пользовательскими данными на страницу .aspx только через модуль python запросов?
Заранее спасибо ..