python - 在 crawlspider 中配置规则时,follow 参数似乎不起作用
问题描述
我想只在第一页提取我想要的链接,并且我在爬虫中设置了DEPTH_LIMIT为1,匹配规则中的参数rule()如下=False,但是我还是发起了多个请求,我不知道为什么。我希望有人能回答我的疑问。提前致谢。
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
from scrapy.spiders import CrawlSpider,Rule
from scrapy.linkextractors import LinkExtractor
class OfficialSpider(CrawlSpider):
name = 'official'
allowed_domains = ['news.chd.edu.cn','www.chd.edu.cn']
start_urls = ['http://www.chd.edu.cn']
custom_settings = {
'DOWNLOAD_DELAY':0,
'DEPTH_LIMIT':1,
}
rules = (
# Rule(LinkExtractor(allow=('http://news.chd.edu.cn/',)),callback='parse_news',follow=False),
Rule(LinkExtractor(allow=('http://www.chd.edu.cn/')),callback='parse_item',follow=False),
Rule(LinkExtractor(allow=("",)),follow=False),
)
def parse_news(self,response):
print(response.url)
return {}
def parse_item(self,response):
self.log("item链接:")
self.log(response.url)
输出: 在此输入图片描述
解决方案
从文档:
follow
是一个布尔值,它指定是否应从使用此规则提取的每个响应中遵循链接。
这意味着follow=False
只会阻止爬虫在处理由该规则创建的响应时找到的链接,它不会影响解析结果时找到的链接start_urls
。
follow
完全禁用规则的论点毫无意义。如果您不想使用规则,为什么要创建它呢?
推荐阅读
- php - 未捕获的错误:在布尔值上调用成员函数 get_result()
- javascript - 获取php成功输出的ajax返回值为true或false
- spline - 样条拟合数据如何预测特定值
- r - 在 R Shiny 中上传用户选择的目录
- hybris - Hybris 从一个 cmssite 重定向到另一个 cmssite
- python - 如何找到跨越微时间单位的时间序列的周期性?
- css - 为什么我的 CSS 捕捉点没有生效?
- c# - C# - 如何使用控制台应用程序将数据从 SQL 表插入 Excel 模板
- c# - 如何使用 web api 在请求标头中添加 api 密钥
- c - “|”有什么用 c中的运算符和“<<”运算符