如何使用scrapy模拟登录过程,当信息可能由ajax传输时?

时间:2016-09-06 08:15:31

标签: python ajax scrapy

我正在http://www.asianmetal.cn/做一些爬行工作。 但我无法使用像这样的简单FormRequest登录:

def start_requests(self):
    url = 'http://www.asianmetal.cn/login/ajaxLogin.am'
    fake_header = httputils.random_headers()
    formdata = {
        'txtUser_LoginName': '***',
        'txtUser_Pwd': '***',
        'tfc': '1',
    }
    yield scrapy.FormRequest(url=url, formdata=formdata,
        headers=fake_header, callback=self.parse)

然而它不起作用。所以我做了截图以找出发生的事情。

Formdata

那么我应该如何模拟登录过程?

1 个答案:

答案 0 :(得分:0)

你可能错过了一些标题。我尝试过乱码登录,这些是发送的标题:

enter image description here

这里唯一重要的可能是X-Requested-With。有些网站还会检查Referer,但这种情况非常罕见。

要解决此问题,只需使用适当的值更新您的假标头:

fake_header = {}
fake_header['X-Request-With'] = 'XMLHttpRequest'
fake_header['Referer'] = response.url