Я написал скрипт на python для заполнения табличных данных при заполнении двух полей ввода (From
и Through
), расположенных в правом верхнем углу веб-страницы.Дата, которую я заполнил для получения результатов: 08/28/2017
и 11/25/2018
.
Когда я запускаю следующий скрипт, я могу получить табличные результаты с его первой страницы.
Однако данные разбиты на несколько страниц через нумерацию страниц, и URL-адрес остается неизменным.Как получить содержимое следующей страницы?
URL-адрес сайта
Это моя попытка:
import requests
from bs4 import BeautifulSoup
url = "https://www.myfloridalicense.com/FLABTBeerPricePosting/"
res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
try:
evtrgt = soup.select_one("#__EVENTTARGET").get('value')
except AttributeError: evtrgt = ""
viewstate = soup.select_one("#__VIEWSTATE").get('value')
viewgen = soup.select_one("#__VIEWSTATEGENERATOR").get('value')
eventval = soup.select_one("#__EVENTVALIDATION").get('value')
payload = {
'__EVENTTARGET': evtrgt,
'__EVENTARGUMENT': '',
'__VIEWSTATE':viewstate,
'__VIEWSTATEGENERATOR':viewgen,
'__VIEWSTATEENCRYPTED':'',
'__EVENTVALIDATION':eventval,
'ctl00$MainContent$txtPermitNo':'',
'ctl00$MainContent$txtPermitName': '',
'ctl00$MainContent$txtBrandName':'',
'ctl00$MainContent$txtPeriodBeginDt':'08/28/2017',
'ctl00$MainContent$txtPeriodEndingDt':'11/25/2018',
'ctl00$MainContent$btnSearch': 'Search'
}
with requests.Session() as s:
s.headers["User-Agent"] = "Mozilla/5.0"
req = s.post(url,data=payload,cookies=res.cookies.get_dict())
sauce = BeautifulSoup(req.text,"lxml")
for items in sauce.select("#MainContent_gvBRCSummary tr"):
data = [item.get_text(strip=True) for item in items.select("th,td")]
print(data)
Любая помощь для решения проблемы будет принята с благодарностью.Еще раз: данные, которые я хочу получить, представляют собой табличные данные со следующих страниц сайта, поскольку мой сценарий уже может анализировать данные с его первой страницы?
P.S.: Browser simulator is not an option I would like to cope with.