文档章节

分页爬虫线程模型

无知有趣
 无知有趣
发布于 2015/08/08 12:46
字数 520
阅读 277
收藏 12

11个主线程+1个列表线程+N个明细线程

对要爬取的网站数据,基本是采用分页的形式展现,通过遍历列表解析明细URL,进而爬取明细页面内容;

每个网站一个处理线程,爬取列表和爬取明细采用单独的子线程,列表爬取线程相当于生成者,分页一般在几十条,有些网站可在请求中指定分页大小参数可达百条一页,生产速度足够消费,单线程爬取解析列表,往无界阻塞队列存待爬的明细url,根据带宽(避免IO超时)和服务器性能(500响应码)配置N个明细爬取线程作为消费者,对爬取内容进行解析,缓存解析后实体对象,达到一定量时批量持久化。列表单线程生产速度可控,看过几个开源框架列表和明细的url是在同一个队列,那就会有优先级问题,队列中同时有列表和明细时需要明细先爬,未区分列表和明细,每个线程既处理列表又处理明细,何时停止爬取是个麻烦问题,队列中没有可用url并不代表爬完,可能有某个线程还在爬一个列表呢。

2、爬完一个网站需要记录爬取情况日志信息,比如新增记录数、修改记录数、服务端异常次数(异常太多可减少明细线程数)、IO异常次数(异常太多可减少明细线程数)、开始时间、结束时间、异常信息等;

3、多个网站同时爬取时在外面套一层,3层线程结构,第一层里启动各源线程,第二层里启动列表和明细;

run()
{
    for(int i=0;i<x;i++)new Thread(new PullXXX()).start();
}

AbstractPull implements Runnable
{
    PullList   implements Runnable{};

    PullDetail implements Runnable{};

    run()
    {
        new Thread(new PullList()).start();

        for(int i=0;i<N;i++)
        {
            new Thread(new PullDetail()).start();
        }

        CountDownLatch.await();
        log();
    }
}


© 著作权归作者所有

无知有趣
粉丝 13
博文 120
码字总数 33484
作品 0
北京
后端工程师
私信 提问
加载中

评论(1)

x
xiatiandefeng
博主写的很好,赞一个,多谢分享42
分享一个免费好用的云端爬虫开发平台
http://www.shenjianshou.cn/
xiyouMc/PornHubBot

免责声明:本项目旨在学习Scrapy爬虫框架和MongoDB数据库,不可使用于商业和个人其他意图。若使用不当,均由个人承担。 简介 项目主要是爬取全球最大成人网站PornHub的视频标题、时长、mp4链...

xiyouMc
2017/04/10
0
0
python爬虫之旅(2):resquests + bs4爬取拉勾网职位信息

在上文python爬虫之旅(1):urllib2 + BeautifulSoup爬取豆瓣电影TOP250中 我们使用了python自带的urllib2模块和beautifulSoup解析模块完成了不用登陆的纯html页面的爬取以及解析 这次我们打算...

KKys
2017/10/09
0
0
Memcache-LRU爬虫线程-源码分析

介绍 memcache 中实现了内存管理模型用来存储数据,而在此基础上又实现了一套LRU爬虫模型来维护这些已使用的内存,因为如果一直使用这些内存而不去维护会占用大量的系统资源,所以提供这么一...

简单方式
2017/02/04
0
0
【开源访谈】 Spiderman作者赖伟威访谈实录

【作者简介】 赖伟威 毕业刚满一年的Java Coder,立志做可靠的系统架构师。大学期间与几位志同道合的同学创办CFuture工作室。现在深圳打拼中。 【软件简介】 Spiderman 是一个基于微内核+插件...

丫头潘潘
2013/06/26
3K
12
Mybatis3.4.x技术内幕(二十):PageHelper分页插件源码及原理剖析

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。 原本以为分页插...

祖大俊
2016/09/10
3.1K
4

没有更多内容

加载失败,请刷新页面

加载更多

驰骋工作流引擎-督查督办系统

1.概要说明 督查督办系统信息化平台适用于政府,企事业单位的重点项目跟进,重点工程部署,及各级精神的传达等督查督办性工作。开发设计坚持流程式管理的总体思路,充分体现督查事项立项的规...

孟娟
18分钟前
0
0
阿里靠什么支撑 EB 级计算力?

作者 关涛 阿里云智能事业群 研究员 导读:MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute 做了哪些工作,这...

zhaowei121
21分钟前
0
0
mybatis生成代码配置详解

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.o......

事儿爹
23分钟前
0
0
Vuex和表单绑定的一个神级坑再填一遍

vuex有一个很大的缺陷,就是和input输入框的v-model本身是冲突的。 官方文档给出了两种解决方案:https://vuex.vuejs.org/zh/guide/forms.html 一个是使用get和set → 适用于input框比较少的...

LinearLaw
25分钟前
0
0
CPU与GPU的区别

作者讲述的清楚: 我的理解:1 GPU ALU更多 2 Core 更多 3 业务更加专一(主要进行密集计算) 4 缓存区更少 https://www.zhihu.com/question/19903344...

南桥北木
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部