我正在尝试抓取以下网站,其中分页是通过 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/