当前位置:网站首页>使用 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 会被正常调用。
边栏推荐
- Alibaba Cloud SMS Sending
- mysql数据库配置性能调优
- Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
- 文章列表的显示 以及创建文章 还有文章详情的基本
- cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
- MySQL 主从切换步骤
- 关于Unity自定义Inspector面板的一些自定义编辑器扩展
- 梯度消失和梯度爆炸
- Redis和Mysql数据同步的两种方案
- 关于Unity,Laya学习,第一步加载Unity加载场景
猜你喜欢
随机推荐
MySQL-DDL数据定义语言-约束
Redis和Mysql数据同步的两种方案
mysql 事务原理详解
【LeetCode】226.翻转二叉树
英文语法-状语从句
mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
When deleting a folder, the error "Error ox80070091: The directory is not empty" is reported. How to solve it?
013-Binary tree
【LeetCode】622.设计循环队列
子查询和关联查询的区别
xtrabackup
删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
自动化测试浏览器驱动下载版本对应关系
redis实现分布式锁的原理
bihash总结
MySQL 主从切换步骤
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
Flink Yarn Per Job - 提交应用
ClickHouse删除数据之delete问题详解
The window of the chosen data flow