1. scrapy对request的URL去重 yield scrapy.Request(url, self.parse, dont_filter=False) 注意这个参数:dont_filter=False 2. Jobs: 暂停,恢复爬虫 启用一个爬虫的持久化,运行以下命令: scrapy crawl somespider -s JOBDIR=crawls/somespider-1 然后,你就能在任何时候安全地停止爬虫(按Ctrl-C或者发送一个信号)。 恢复这个爬虫也是同样的命令: scrapy crawl somespider -s JOBDIR=crawls/somespider-1 这样爬虫断掉后,再启动会接着上次的 url 跑。 详细请看 https://www.howtoing.com/scra... 如果命令行里不想看到那么多输出的话,可以加个 -L WARNING 参数 运行爬虫如: scrapy crawl spider1 -L WARNING
1、Pipleline 加入如下代码:(在数据爬完后将URL塞入redis去重) class RedisInsert(object):
def process_item(self,item,spider):
set_redis_values_1(item['url'])
return item 2、Middleware加入如下代码:(在爬数据之前查看该URL是否爬取过) class IngoreRequestMiddleware(object):
def __init__(self):
self.middlewareLogging=getLogger("IngoreRequestMiddleware")
def process_request(self,request,spider):
if get_redis_values_1(request.url):
self.middlewareLogging.debug("IgnoreRequest : %s" % request.url)
raise IgnoreRequest("IgnoreRequest : %s" % request.url)
else:
self.middlewareLogging.debug("haveRequest : %s" % request.url)
return None ---------------------