当前位置:网站首页>使用 Scrapy 框架对重复的 url 无法获取数据,dont_filter=True
使用 Scrapy 框架对重复的 url 无法获取数据,dont_filter=True
2022-08-03 09:26:00 【月亮给我抄代码】
场景:代码没有报错,而且确定 xpath 表达式正确解析。
可能的原因是:你使用了 Scrapy 对重复的 url 进行请求。
Scrapy 内置了重复过滤功能,默认情况下该功能处于打开状态。
如下实例,parse2 无法被调用:
import scrapy
class ExampleSpider(scrapy.Spider):
name ="test"
# allowed_domains = ["https://www.baidu.com/"]
start_urls = ["https://www.baidu.com/"]
def parse(self,response):
yield scrapy.Request(self.start_urls[0],callback=self.parse2)
def parse2(self, response):
print(response.url)
Scrapy 在进入 parse 时,会默认请求一次 start_urls[0],而当你在 parse 中又对 start_urls[0] 进行请求时,Scrapy 底层会默认过滤掉重复的 url,不会对该请求进行提交,这就是为什么 parse2 不被调用的原因。
解决方法:
添加 dont_filter=True 参数,这样 Scrapy 就不会过滤掉重复的请求。
import scrapy
class ExampleSpider(scrapy.Spider):
name ="test"
# allowed_domains = ["https://www.baidu.com/"]
start_urls = ["https://www.baidu.com/"]
def parse(self,response):
yield scrapy.Request(self.start_urls[0],callback=self.parse2,dont_filter=True)
def parse2(self, response):
print(response.url)
此时,parse2 会被正常调用。
边栏推荐
- Chrome F12 keep before request information network
- Add Modulo 10 (规律循环节,代码实现细节)
- 多媒体数据处理实验4:LSH索引
- milvus
- LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
- 【LeetCode】101. Symmetric Binary Tree
- MySQL的存储过程
- Automated test browser driver download version
- MYSQL 修改时区的几种方法
- 文章列表的显示 以及创建文章 还有文章详情的基本
猜你喜欢
随机推荐
命令行加载特效 【cli-spinner.js】 实用教程
Oracle数据库表空间整理回收与释放操作
【LeetCode】老虎证券面试-括号嵌套且满足优先级
chrome F12 network 保留之前请求信息
gpnmb+ gpnmb-AT2 cell空转映射 上皮细胞的空转映射
机器学习(公式推导与代码实现)--sklearn机器学习库
Redis和Mysql数据同步的两种方案
STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)
selenium IDE的3种下载安装方式
015-平衡二叉树(一)
浅析什么是伪类和伪元素?伪类和伪元素的区别解析
Add Modulo 10 (规律循环节,代码实现细节)
Partition table (1)
【LeetCode】226.翻转二叉树
dflow入门4——recurse&reuse&conditional
箭头函数与普通函数的区别
bihash总结
AD环境搭建
Redis和MySQL如何保持数据一致性
What exactly does a firmware engineer do?