Scrapy截断Response对象中的问号

时间:2016-01-23 07:23:08

标签: python escaping scrapy

我有一个我正在抓取的网站的网址列表。我的问题是我无法让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()方法也没有。我很感激任何建议!

萨姆

1 个答案:

答案 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是您需要创建的函数,用于处理对响应的抓取。