Извлечение таблицы со страницы aspx с помощью python почтового запроса - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь получить таблицу со страницы .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 запросов?

Заранее спасибо ..

...