我有一个我正在抓取的网站的网址列表。我的问题是我无法让Scrapy超越第一页。我最好的猜测是Response对象忽略了“?page =#”。这也解释了为什么第一页正在加载,因为当未指定页码时,站点默认为第一页。
代码:
for page in page_urls:
Request(url=page)
print(page)
print(response.url)
输出:
https://www.example.com/RP_Results.jsp?page=1
https://www.example.com/RP_Results.jsp
https://www.example.com/RP_Results.jsp?page=2
https://www.example.com/RP_Results.jsp
https://www.example.com/RP_Results.jsp?page=3
https://www.example.com/RP_Results.jsp
https://www.example.com/RP_Results.jsp?page=4
https://www.example.com/RP_Results.jsp
我试图逃避问号,然而,似乎没有用。此外,使用Response.Replace()方法也没有。我很感激任何建议!
萨姆
答案 0 :(得分:1)
正如@soon所说,你没有在任何地方存储你的回复。
试试这个:
for page in page_urls:
response = Request(url=page)
print response.url
或者,使用响应的理想方法是执行以下操作:
for page in page_urls:
yield Request(url=page, callback=self.callback)
其中self.callback
是您需要创建的函数,用于处理对响应的抓取。