我正在使用Scrapy从使用ASP.NET的站点中抓取数据。当我没有登录时,我可以抓取所有可用的数据。但是,对于专有材料,我需要登录。 当我调用FormRequest.from_response()时,我无法登录。知道我缺少什么吗?这是我的蜘蛛:
def parse_login(self, response):
vs = response.xpath('//*[@name="__VIEWSTATE"]/@value').extract_first()
vsg = response.xpath('//*[@name="__VIEWSTATEGENERATOR"]/@value').extract_first()
ev = response.xpath('//*[@name="__EVENTVALIDATION"]/@value').extract_first()
return [scrapy.FormRequest.from_response(response=response,method='POST',formdata={
# '__EVENTTARGET':'',
# '__EVENTARGUMENT':'',
#'__VIEWSTATE':vs,
'ctl00$cph_main$txt_email:':login_user,
'ctl00$cph_main$txt_pass':login_password,
#'__VIEWSTATEGENERATOR':vsg,
#'__EVENTVALIDATION':'',
},callback=self.start_crawl)]
这里是通过“网络”选项卡“检查”登录页面后的表单数据,POST方法带有302状态代码:
ToolkitScriptManager1_HiddenField:
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE: ‘VIEWSTATE_STRING’
__VIEWSTATEGENERATOR: C2EE9ABB
__EVENTVALIDATION: ‘EVENTVALIDATION_STRING’
ctl00$cph_main$txt_email: my_eml
ctl00$cph_main$txt_pass: my_pswrd
ctl00$cph_main$Button1: login