Hi bobby:
dont_filter 是针对Request对象过滤,还是针对url过滤?
if url in urls:
yield scrapy.Request(url=url,callback=callback,dont_filter=True)
这样设置dont_filter对吗? 我没弄明白到底在什么实际情况下使用dont_filter=True.
是碰到相同的Request对象不进行过滤?还是碰到相同的url不进行过滤?
请你给举例讲解一下.如果dont_filter使用不当的话,可能会进入死循环的爬取.谢谢!
for question_data in question_json["data"]:
if "question" in question_data["target"]:
# 获取问题的ID
question_id = question_data["target"]["question"]["id"]
# https://www.zhihu.com/question/266668342
question_url = "https://www.zhihu.com/question/{}".format(question_id)
# 问题的创建时间
question_created_time = question_data["target"]["question"]["created"]
# 获取question url后,解析数据
yield scrapy.Request(question_url, headers=self.headers,
meta={"question_created_time": question_created_time},
callback=self.parse_question)
比如我这段代码,需不需要添加dont_filter=True,不添加的话会出现什么情况?只会爬取第一个url吗?
再就是如果遍历出两个相同的url,设置为True的话,也不会被过滤吗?
dont_filter参数到底是去除重复的url呢?还是对某段时间内发送多个Request的时候进行过滤?
问的问题可能有些乱,中心思想是dont_filter到底怎么用?一头雾水.
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
了解课程