Scrapy FormRequest 返回 400 错误代码

标签 scrapy scrapy-spider

我正在尝试抓取以下网站,其中分页是通过 AJAX 请求进行的。
http://studiegids.uva.nl/xmlpages/page/2014-2015/zoek-vak

我正在发送 FormRequest 以访问不同的页面,但是出现以下错误。
重试 http://studiegids.uva.nl/xmlpages/plspub/uva_search.courses_pls>(失败 1 次):400 错误请求

无法理解有什么问题?以下是代码。

class Spider(BaseSpider):
name = "zoek"
allowed_domains = ["studiegids.uva.nl"]
start_urls = ["http://studiegids.uva.nl/xmlpages/page/2014-2015/zoek-vak"]

def parse(self, response):
    base_url = "http://studiegids.uva.nl/xmlpages/page/2014-2015/zoek-vak"
    for i in range(1, 10):
        data = {'p_fetch_size': unicode(20),
                'p_page:': unicode(i),
                'p_searchpagetype': u'courses',
                'p_site_lang': u'nl',
                'p_strip': u'/2014-2015',
                'p_ctxparam': u'/xmlpages/page/2014-2015/',
                'p_rsrcpath':u'/xmlpages/resources/TXP/studiegidswebsite/'}

        yield FormRequest.from_response(response,
                                        formdata=data,
                                        callback=self.fetch_details,
                                        dont_click=True)

        # yield FormRequest(base_url,
        #                   formdata=data,
        #                   callback=self.fetch_details)

def fetch_details(self, response):
    # print response.body
    hxs = HtmlXPathSelector(response)
    item = ZoekItem()
    Studiegidsnummer = hxs.select("//div[@class=item-info']//tr[1]/td[2]/p/text()")
    Studielast = hxs.select("//div[@class=item-info']//tr[2]/td[2]/p/text()")
    Voertaal = hxs.select("//div[@class=item-info']//tr[3]/td[2]/p/text()")
    Ingangseis = hxs.select("//div[@class=item-info']//tr[4]/td[2]/p/text()")
    Studiejaar = hxs.select("//div[@class=item-info']//tr[5]/td[2]/p/text()")
    Onderwijsinstituut = hxs.select("//div[@class=item-info']//tr[6]/td[2]/p/text()")


    for i in range(20):
        item['Studiegidsnummer'] = Studiegidsnummer
        item['Studielast'] = Studielast
        item['Voertaal'] = Voertaal
        yield item

最佳答案

还尝试使用 Firebug 检查标题。

关于Scrapy FormRequest 返回 400 错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937566/

相关文章:

scrapy - 如何使用 Scrapy 下载图片?

python - Scrapy - 理解 CrawlSpider 和 LinkExtractor

python - 有什么方法可以为每个蜘蛛使用单独的 scrapy 管道吗?

python - Selenium 为未使用的蜘蛛运行 Firefox 驱动程序

python - 为什么 scrapy 转储数千条 `ERROR` 日志消息而没有任何错误描述?

scrapy - 使用 Scrapy 在 JSON 中抓取 HTML

web-scraping - 使用Scrapy时如何防止twisted.internet.error.ConnectionLost错误?

python - scrapy抓取多个页面,提取数据并保存到mysql中

python - 如何访问亚马逊类别列表的第 101 页

python - 导入错误 : DLL load failed: The operating system cannot run %1. Python 2.7.12 |Anaconda 4.2.0(64 位)