• python scrapy爬虫数据库去重方法


    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 ---------------------
  • 相关阅读:
    【转】DirectoryEntry.Properties属性的遍历
    mysql 插入优化
    MySQL错误无法启动1067
    用ADO.NET的ExecuteScalar方法返回单一值资讯动态
    poj 1416 Shredding Company
    poj 1724 ROADS
    poj 3411 Paid Roads
    poj 1129 Channel Allocation
    poj 2676 Sudoku
    spring里的applicationlisener
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9838542.html
Copyright © 2020-2023  润新知