Python 响应对象中的剪贴式截断问号
我有一个我正在抓取的网站的URL列表。我的问题是,我无法通过第一页。我的最佳猜测是响应对象忽略了“?page=#”。这也解释了为什么在没有指定页码的情况下加载第一页,因为站点默认为第一页 代码: 输出:Python 响应对象中的剪贴式截断问号,python,escaping,scrapy,Python,Escaping,Scrapy,我有一个我正在抓取的网站的URL列表。我的问题是,我无法通过第一页。我的最佳猜测是响应对象忽略了“?page=#”。这也解释了为什么在没有指定页码的情况下加载第一页,因为站点默认为第一页 代码: 输出: 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.examp
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()方法也不会导致错误。我非常感谢所有的建议
Sam正如@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
是您需要创建的一个函数,用于处理响应的刮取。什么是response
?它很可能没有在循环中更新。不应该用response=Request(url=page)
替换Request(url=page)
?谢谢,这很有效。一个非常简单的bug。我的印象是请求更改了响应对象本身。谢谢你的帮助!
for page in page_urls:
yield Request(url=page, callback=self.callback)