scrapy暂停和重启,及url去重原理

一.scrapy暂停与重启

  1.要暂停,就要保留一些中间信息,以便重启读取中间信息并从当前位置继续爬取,则需要一个目录存放中间信息:

    scrapy crawl spider_name -s JOBDIR=dir/001——spider_name是你要爬取得spider的py文件名,JOBDIR是命令参数,即代表存放位置参数,dir是中间信息要保存的目录,001新生成的文件夹名是保存的中间信息,重启则读取该文件信息。可以将JOBDIR 设置在setting中,或写在custom_settings中,在Pycharm中都会执行,但是在Pycharm中无法发送ctrl+c,即无法将进程放入后台并暂停。

  2.执行命令:scrapy crawl jobbole -s JOBDIR=jobs/001

    2.1有可能会报以下错误,这是因为未进入到项目目录(crawl会搜索scrapy.cfg文件):

    2.2进入目录正常运行后,ctrl+c暂停进程:

     会在jobs下生成一个001文件夹生成如下图文件,request.seen是保存的已经访问了的url,spider.state是spider的状态信息,request.queue中有active.json和p0两个文件,p0是还需要继续做的request(跑完该文件就没有了)

  3.重启(也是执行scrapy crawl jobbole -s JOBDIR=jobs/001):

    会读取相关信息并继续执行,p0文件会减小,request.seen文件会增大(读取新的request,存入url),两次ctrl+c强制关掉,若需从新爬则可以指定新的文件夹,如jobs/002.

二.scrapy去重原理

  1.

原文地址:https://www.cnblogs.com/lyq-biu/p/9773006.html

时间: 2024-10-12 06:49:43

scrapy暂停和重启,及url去重原理的相关文章

第三百五十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy的暂停与重启

第三百五十三节,Python分布式爬虫打造搜索引擎Scrapy精讲-scrapy的暂停与重启 scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取 实现暂停与重启记录状态 1.首先cd进入到scrapy项目里 2.在scrapy项目里创建保存记录信息的文件夹 3.执行命令: scrapy crawl 爬虫名称 -s JOBDIR=保存记录信息的路径 如:scrapy crawl cnblogs -s JOBDIR=zant/001

网络爬虫之url等高效率去重原理

布隆过滤器用于字符串去重复,比如网络爬虫抓取时URL去重.邮件提供商反垃圾黑名单Email地址去重.等等.用哈希表也可以用于元素去重,但是占用空间比较大,而且空间使用率只有50%. 布隆过滤器只占哈希表的1/8或1/4的空间复杂度,就能解决同样的问题,但是有一定的误判,而且不能删除已有元素.元素越多,误报率越大,但是不会漏报.对于还需要删除的布隆过滤器,还有Counter Bloom Filter,这个是布隆过滤器的变体,可以删除元素. 布隆过滤器的原理 布隆过滤器需要的是一个一维数组(和位图类

网络爬虫:URL去重策略之布隆过滤器(BloomFilter)的使用

前言: 最近被网络爬虫中的去重策略所困扰.使用一些其他的"理想"的去重策略,不过在运行过程中总是会不太听话.不过当我发现了BloomFilter这个东西的时候,的确,这里是我目前找到的最靠谱的一种方法. 如果,你说URL去重嘛,有什么难的.那么你可以看完下面的一些问题再说这句话. 关于BloomFilter: Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员.如果检测

URL去重

import socket dictlist ={}; def ReadHost(): hosts = []; obn = open('d:/sss.txt', 'rb'); for line in obn: #sometime you should filter \r\n line = line.strip('\n') hosts.append(line) obn.close(); return hosts; def SysDNS(): hosts = ReadHost(); for host

url去重 --布隆过滤器 bloom filter原理及python实现

https://blog.csdn.net/a1368783069/article/details/52137417 # -*- encoding: utf-8 -*- """This module implements a bloom filter probabilistic data structure and an a Scalable Bloom Filter that grows in size as your add more items to it withou

python - scrapy 爬虫框架(创建, 持久化, 去重, 深度, cookie)

## scrapy 依赖 twisted  - twisted 是一个基于事件循环的 异步非阻塞 框架/模块 ##  项目的创建  1. 创建 project scrapy startproject 项目名称 项目名称(项目结构) - spiders # 爬虫文件 - q.py - w.py - items.py # 持久化 - pipelines # 持久化 - middlewares.py # 中间件 - settings.py # 配置文件(爬虫) scrapy.cfg # 配置文件(部署

Django 笔记 URL 分发原理

做了2个页面,觉得大致了解了参数和页面如何传递了,我们来看下原理. 一个HTTP请求发送到http://127.0.0.1:8000/hello/ Django会第一时间去找setting文件的setting.py ROOT_URLCONF = 'untitled2.urls' 当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf . 然后按顺序逐个匹配URLconf里 的URLpatterns,直到找到一个匹配的. 当找到这个匹配 的UR

解决常见伪静态url去重

常见的伪静态链接: 1.http://xue.zbj.com/live/livecollege/list/237 解决方法,以 / 分割参数,生成list,用一次pop之后(比较倒数第二个参数是否相同),以此递进 1 #url形式为http:// 开头 2 for i in ulist: 3 line = i.split('/')[3:] 4 if len(line) > 0: 5 line.pop() # 一次pop 比较 除倒数第一个参数外,其余参数是否相同,以 / 分割 6 key = s

关于SimHash去重原理的理解(能力工场小马哥)

阅读目录 1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHash存储和索引 7. 参考内容 在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)),本文介绍的SimHas