gpt4 book ai didi

python - Scrapy process_links 和 process_request 的示例代码

转载 作者:太空狗 更新时间:2023-10-30 01:06:18 25 4
gpt4 key购买 nike

我是 Scrapy 的新手,我希望有人能给我很好的示例代码,说明什么时候 process_links 和 process_request 最有用。我看到 process_links 用于过滤 URL,但我不知道如何编码。

谢谢。

最佳答案

你的意思是 scrapy.spiders.Rulescrapy.CrawlSpider 中最常用的

它们的作用与名字所说的差不多,或者换句话说,在提取链接和处理/下载链接之间充当某种中间件。

process_links 介于提取链接和转换为请求之间。这方面有很酷的用例,仅举几个常见的用例:

  1. 过滤掉一些您不喜欢的链接。
  2. 手动进行重定向以避免错误请求。

例子:

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 共享一些用例,但实际上可以做一些其他很酷的事情,例如:

  1. 修改 header (例如 cookie)。
  2. 根据 url 中的某些关键字更改回调等详细信息。

例子:

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

您可能不会经常使用它们,但这两个在某些情况下可能是非常方便和简单的快捷方式。

关于python - Scrapy process_links 和 process_request 的示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com