为什么列表增量爬取要单线程?

适用于对数据同步要求高,每天的增量数据不太大的情况。

1、防止漏爬,单线程时刚爬完第1页有新数据产生,在爬第2页的时候首条数据已经爬过,出现重复而已,不会丢失;多线程时比如3个线程,每页10条分别为1-10,11-20,21-30,第3页被先爬取了,此时服务器新增了一条,另一个线程刚好抓取第2页,原来的第20条数据被顶到第3页了,可第3页已经爬过了,这样就漏掉了一条数据。

2、增量停止,既然是增量爬,就得知道什么时候停止,比如根据时间、记录数等,就是得知道上次爬到哪了,如果列表没有规律那就瞎了,多线程的时候这个停止条件有一个线程达到了,其他线程得到通知的时候可能已经做了很多无用工作,重复爬了一堆页面;

3、列表并发,单线程爬时不用考虑,不能一个线程刚爬了第1页,别的线程又爬一遍;

4、请求频率,服务器可能对同一ip请求翻页的频率有限制,多线程控制起来费点劲;

时间: 2024-11-05 10:41:39

为什么列表增量爬取要单线程?的相关文章

webmagic 增量爬取

webmagic  是一个很好并且很简单的爬虫框架,其教程网址:http://my.oschina.net/flashsword/blog/180623 webmagic参考了scrapy的模块划分,分为Spider(整个爬虫的调度框架).Downloader(页面下载).PageProcessor(链接提取和页面分析).Scheduler(URL管理).Pipeline(离线分析和持久化)几部分.只不过scrapy通过middleware实现扩展,而webmagic则通过定义这几个接口,并将其

scrapy-deltafetch实现增量爬取

详情:https://blog.csdn.net/zsl10/article/details/52885597 安装:Berkeley DB # cd /usr/local/src # wget http://download.oracle.com/berkeley-db/db-4.7.25.NC.tar.gz # tar zxvf db-4.7.25.NC.tar.gz # cd build_unix # ../dist/configure # make&&make install 安装

爬取电影天堂最新电影的名称和下载链接(增量爬取mysql存储版)

这次的程序是在上次的基础上进行修改,把持久化储存方式改成mysql,并增加了断点续爬功能. import requests import re from fake_useragent import UserAgent import random import time import pymysql from hashlib import md5 from lxml import etree class DianyingtiantangSpider(object): def __init__(se

nutch的定时增量爬取

译文来着: http://wiki.apache.org/nutch/Crawl 介绍(Introduction) 注意:脚本中没有直接使用Nutch的爬去命令(bin/nutch crawl或者是"Crawl"类),所以url过滤的实现并不依赖"conf/crawl-urlfilter.txt",而是应该在"regex-urlfilter.txt"中设定实现. 爬取步骤(Steps) 脚本大致分为8部: Inject URLs(注入urls)

爬虫 + 数据分析 - 7 CrawlSpider(全站爬取), 分布式, 增量式爬虫

一.全站爬取(CrawlSpider) 1.基本概念 作用:就是用于进行全站数据的爬取 - CrawlSpider就是Spider的一个子类 - 如何新建一个基于CrawlSpider的爬虫文件 - scrapy genspider -t crawl xxx www.xxx.com - LinkExtractor连接提取器:根据指定规则(正则)进行连接的提取 - Rule规则解析器:将链接提取器提取到的链接进行请求发送,然后对获取的页面数据进行 指定规则(callback)的解析 - 一个链接提

垂直爬虫爬取分页数据

为了爬取全部详情页,一般从列表页开始多线程并发爬取,并发线程数受网络环境(一般表现为超时)和服务器性能影响(一般表现为http响应500). 1.第一页作为抓取入口url,解析出详情页url及其他分页url,详情页优先爬,避免缓存的url过多: 2.查看总共多少页(如果分页中没有总共多少页,通过总记录数/每页记录数计算出多少页),爬取过程不解析分页url,一次性添加全部分页url, 当然也可以在爬第一页的时候添加全部分页,每爬完一页解析出详情页url,详情页优先爬: 3.有些网站在详情页提供上一

爬取Ajax动态加载网页

常见的反爬机制及处理方式 1.Headers反爬虫 :Cookie.Referer.User-Agent 解决方案: 通过F12获取headers,传给requests.get()方法 2.IP限制 :网站根据IP地址访问频率进行反爬,短时间内进制IP访问 解决方案: 1.构造自己IP代理池,每次访问随机选择代理,经常更新代理池 2.购买开放代理或私密代理IP 3.降低爬取的速度 3.User-Agent限制 :类似于IP限制 解决方案: 构造自己的User-Agent池,每次访问随机选择 5.

爬虫5 scrapy框架2 全站爬取cnblogs, scarpy请求传参, 提高爬取效率, 下载中间件, 集成selenium, fake-useragent, 去重源码分析, 布隆过滤器, 分布式爬虫, java等语言概念补充, bilibili爬视频参考

1 全站爬取cnblogs # 1 scrapy startproject cnblogs_crawl # 2 scrapy genspider cnblogs www.cnblogs.com 示例: # cnblogs_crawl/cnblogs_crawl/spiders/cnblogs.py import scrapy from cnblogs_crawl.items import CnblogsCrawlItem from scrapy.http import Request class

用JAVA制作一个爬取商品信息的爬虫(爬取大众点评)

很多企业要求利用爬虫去爬取商品信息,一般的开发模型如下: for i=1;i<=最大页号;i++ 列表页面url=商品列表页面url+?page=i(页号) 列表页面=爬取(列表页面url) 商品链接列表=抽取商品链接(列表页面)  for 链接 in 商品链接列表: 商品页面=爬取(链接) 抽取(商品页面); 这样的模型看似简单,但是有一下几个问题: 1)爬虫没有线程池支持. 2)没有断点机制. 3)没有爬取状态存储,爬取商品网站经常会出现服务器拒绝链接(反问次数过多),导致一旦出现 拒绝链接