我是 Scrapy 的新手,我希望有人能给我一些很好的示例代码,说明何时 process_links 和 process_request 最有用。我看到 process_links 用于过滤 URL,但我不知道如何编码。
谢谢。
你的意思是scrapy.spiders.Rule
最常用于scrapy.CrawlSpider
它们的功能与名称差不多,或者换句话说,它们在提取链接和处理/下载之间充当中间件。
process_links
位于链接被提取并转换为 request 之间。有一些很酷的用例,仅举几个常见的例子:
- 过滤掉一些您不喜欢的链接。
- 手动进行重定向以避免错误的请求。
例子:
def process_links(self, link):
for link in links:
#1
if 'foo' in link.text:
continue # skip all links that have "foo" in their text
yield link
#2
link.url = link.url + '/' # fix url to avoid unnecessary redirection
yield link
process_requests
位于刚刚发出的请求和下载之前之间。它与以下共享一些用例process_links
但实际上可以做一些其他很酷的事情,例如:
- 修改标头(例如cookie)。
- 根据 url 中的某些关键字更改回调等详细信息。
example:
def process_req(self, req):
# 1
req = req.replace(headers={'Cookie':'foobar'})
return req
# 2
if 'foo' in req.url:
return req.replace(callback=self.parse_foo)
elif 'bar' in req.url:
return req.replace(callback=self.parse_bar)
return req
您可能不会经常使用它们,但这两个在某些情况下可能是非常方便和简单的快捷方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)