我是Scrapy的新手,我希望有人能给我一些关于process_links和process_request最有用的好示例代码。我发现process_links用于过滤网址,但我不知道如何对其进行编码。
谢谢。
答案 0 :(得分:4)
您的意思是scrapy.spiders.Rule
scrapy.CrawlSpider
他们几乎完全按照名称所说的,或者换句话说,在提取和处理/下载链接之间充当中间件。
process_links
介于提取链接并转换为请求之间。这里有很酷的用例,仅举几个常见的用例:
示例:
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
共享一些用例,但实际上可以做一些其他很酷的东西,如:
示例:
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
你可能不会经常使用它们,但在某些情况下这两种方法可以非常方便和简单。