Python 不可预测的POST响应在200、500和404之间变化

Python 不可预测的POST响应在200、500和404之间变化,python,post,web-scraping,http-status-code-404,scrapy,Python,Post,Web Scraping,Http Status Code 404,Scrapy,尝试对返回大量搜索结果的站点进行一些清理。问题是导航页面的唯一方法是通过附加到每个链接的href参数的_doPostBack方法 这是我当前的代码: class guruSpider(BaseSpider): name = "guru" allowed_domains = ["guru.com"] def start_requests(self): baseUrl = "http://www.guru.com/emp/search.aspx?keywor

尝试对返回大量搜索结果的站点进行一些清理。问题是导航页面的唯一方法是通过附加到每个链接的href参数的_doPostBack方法

这是我当前的代码:

class guruSpider(BaseSpider):
    name = "guru"
    allowed_domains = ["guru.com"]

    def start_requests(self):
        baseUrl = "http://www.guru.com/emp/search.aspx?keyword=#&&sort=Earnings&page="
        endUrl = "&sort=Earnings"
        target = 'ctl00$empcnt$ucResults$pagination'
        hiddenValue = ";;AjaxControlToolkit, Version=3.5.60919.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e:en-US:311bfa99-1d92-41d7-aace-73bb01d14bf6:475a4ef5:effe2a26:1d3ed089:5546a2b:497ef277:a43b07eb:d2e10b12:37e2e5c9:751cdd15:dfad98a5:3cf12cf1"
        requests = []
        for i in range(1, 5):
            url = baseUrl + str(i)
            argument = str(i+1)
            data = {'__EVENTTARGET': target, '__EVENTARGUMENT': argument,
                    '__ASYNCPOST': 'true', 'ctl00_scriptMgr_HiddenField':hiddenValue}
            currentPage = FormRequest(url, formdata=data)
            requests.append(currentPage)
        return requests
这具有以下响应示例:

Crawled (404) <POST http://www.guru.com/emp/search.aspx?keyword=#&&sort=Earnings&page=3> (referer: None)
Crawled (200) <POST http://www.guru.com/emp/search.aspx?keyword=#&&sort=Earnings&page=4> (referer: None)
已爬网(404)(引用者:无)
爬网(200)(参考者:无)
然而,在200消息中,实际返回如下:

<HtmlXPathSelector xpath=None data=u'<html><body><p>179|error|500|The page is'>


有没有办法解决这个问题?我真的对此束手无策。

因此,事实证明,使用scrapy与任何javascript交互通常都是一场失败的战斗。最终使用casperjs实际执行这些请求,效果非常好。我听说Selenium也适用于类似的东西,但实际上我还没有尝试过Selenium

我只是想告诉你最新情况