• 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 ---------------------
  • 相关阅读:
    mininet和ryu控制器的连接
    Linux服务器(Ubuntu14.04)添加远程连接VNC Server
    KVM的前世今生
    Ubuntu下搭建ryu环境
    Ubuntu下搭建Mininet环境
    手机蓝牙
    常见的js算法面试题收集,es6实现
    前端笔试题面试题记录(上)
    关于js中onclick字符串传参问题(html="")
    Angular $scope和$rootScope事件机制之$emit、$broadcast和$on
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9838542.html
Copyright © 2020-2023  润新知