使用Scrapy登录失败来刮除ASP.net网站

时间:2018-09-28 13:50:29

标签: python asp.net scrapy

我正在使用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

0 个答案:

没有答案