Я сканирую страницу (без входа в систему), чтобы извлечь основную c информацию. Мне нужно перемещаться с одной страницы на другую. Но чтобы go перейти к следующей странице, мне нужно выбрать опцию в меню, которое запускает __doPostBack.
При запуске паука я получил ошибку Crawled (200) (referer: None), что означает форма была отправлена неправильно. Есть идеи? Заранее спасибо
html
</select>
<select name="ctl00$ctl00$CPContent$CPMain$ucCupRoundsDropdown$ddlMatchRounds" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ctl00$CPContent$CPMain$ucCupRoundsDropdown$ddlMatchRounds\',\'\')', 0)" id="ctl00_ctl00_CPContent_CPMain_ucCupRoundsDropdown_ddlMatchRounds">
<option value="1">Cup Round 1</option>
<option value="2">Cup Round 2</option>
<option selected="selected" value="3">Cup Round 3</option>
<option value="4">Cup Round 4</option>
<option value="5">Cup Round 5</option>
<option value="6">Cup Round 6</option>
<option value="7">Cup Round 7</option>
<option value="8">Cup Round 8</option>
<option value="9">Cup Round 9</option>
<option value="10">Cup Round 10</option>
<option value="11">Cup Round 11</option>
</select>
Код:
class HattrickSpider(CrawlSpider):
name= 'cup'
allow_domain = ['hattrick.org']
start_urls = ['https://www.hattrick.org/en/World/Cup/CupMatches.aspx?CupId=18']
def parse(self, response):
button = response.selector.xpath('//*[@id="ctl00_ctl00_CPContent_CPMain_ucCupRoundsDropdown_ddlMatchRounds"]/option[4]/@value').get()
token = response.xpath('//*[@name="__VIEWSTATE"]/@value').extract_first()
generator = response.xpath('//*[@name="__VIEWSTATEGENERATOR"]/@value').extract_first()
event = response.xpath('//*[@name="__EVENTVALIDATION"]/@value').extract_first()
target = response.xpath('//select[2]/@name').extract_first()
argument = response.xpath('//*[@name="__EVENTARGUMENT"]/@value').extract_first()
return FormRequest.from_response(response,
formdata={'__VIEWSTATE': token,
'__VIEWSTATEGENERATOR': generator,
'__EVENTVALIDATION': event,
'__EVENTTARGET': target,
'__EVENTARGUMENT': argument,
'ctl00$ctl00$CPContent$ucSubMenu$ucLogin$txtUserName':'',
'ctl00$ctl00$CPContent$ucSubMenu$ucLogin$txtPassword':'',
'ctl00$ctl00$CPContent$CPMain$ucSeasonsDropdown$ddlSeasons': '62',
'ctl00$ctl00$CPContent$CPMain$ucCupRoundsDropdown$ddlMatchRounds': '4'},
callback=self.scrape_pages)
def scrape_pages (self, response):
open_in_browser(response)