题记:

  1024,今天是个程序猿的节日 ,哈哈,转为正题,从事了一线网络爬虫开发有近1000天。简单阐述下个人对网络爬虫的理解。

提纲:

1:是什么

2:能做什么

3:怎么做

  4:综述

1:是什么

    wiki释义:网络蜘蛛(Web spider)也叫网络爬虫(Web crawler)[1],蚂蚁(ant),自动检索工具(automatic indexer),或者(在FOAF软件概念中)网络疾走(WEB scutter),是一种“自动化浏览网络”的程序,或者说是一种网络机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。

网络爬虫始于一张被称作种子的统一资源地址(URLs)列表。当网络爬虫访问这些统一资源定位器时,它们会甄别出页面上所有的超链接,并将它们写入一张"待访列表",即所谓"爬行疆域"(crawl frontier)。此疆域上的统一资源地址将被按照一套策略循环访问。

白话语:网络爬虫,是一个(组,套,集群 )能够自动访问网络资源,并抽取目标数据的程序。 类比模拟人工点击访问百度首页,右键打开源码并对源码抽取分析的过程,转化为自动化,并主动发现新连接继续重复的过程。

案例: 百度搜索引擎的数据支持主要由百度爬虫提供。

2:能做什么

       得数据者得天下,网络爬虫应用于搜索引擎是大家都知道的,除此之外,还常应用于,比价,电商,舆情,内容聚合网站等。比价比较有名的惠惠助手。还应用于模拟表单提交,自动登录,自动发送邮件,转发内容等等。  一般数据源从互联网公开信息获取,主要由门户,垂直网站,sns,论坛。   数据分类可参照下图

 

   3:怎么做

    开源爬虫,java有 nutch,heritrix 。python 有 Scrapy ,c的 ,php的也都有 。

从技术角度上来讲,没有好坏之分,还在于人对它的熟稔程度和使用情况 。 非要排资论辈的话 ,只能说 nutch是鼻祖 , nutch建立在luence上, 并且孵化了当下如火如荼hadoop。

其它自行脑补。

自主研发,虽然有那么多的开源框架,鉴于国内网络规范的不规范,及越来越的网站,开始防爬虫。 仅仅借助开源框架很难满足自身的业务需求。 结合业务端,一般公司做法

是自己研发一套适应自己业务的爬虫。 数据来源一般不外乎下图:

自助研发的方向也比较多,结合数据来源站点特征及自身业务,有追求 大而全的,有追求小而美的。有青睐金融数据,有对电商数据情有独钟的。有的追求功能,有的追求性能。   暂不做讨论。

技术架构 ,php python面向过程的采集定向站点数据较为方便。  大吞吐量的 一般采用java,c写分布式式爬虫。 中央调度式(mater/slave),p2p,mixed 等 可参照

crawler_分布式网络爬虫的设计与实现_设计图。 曾用第一种方式实现,在一般网络环境下测试,三个节点 下载速度 28页面/秒。

爬虫功能部分,主要是下载和解析模块。

下载模块:下载各个语言包都有,需要注意的就是 分析网络流,分析工具有很多各个浏览器都带的有,较为好用的firefox,和 chrome. 还有一些第三方的 findder, wireshark,httpwatcher

一些请求参数和响应cookie传递。

解析:通用的做法是正则解析,写的好的话性能也最好。也有一些好用的 dom封装解析的,htmlparse,jsoup,等等。写一些jquery 语法选择器 ,也称xpath. crawler_jsoup HTML解析器_使用选择器语法来查找元素 crawler_解析之_jquery_语法选择器使用方法 ,应对规范网站第二种做法比第一种好写,正则毕竟写起来比xpath要麻烦。

  4:综述

    关于爬虫,要写的太多,一线爬虫屌丝码农文采有限,后续会不定期陆续补充,其实任何技术都是,不在于问了多少,看了多少, 得亲手自己去试,多练 ,多试错,猜测,验证的一个过程。

难免疏忽,望大家海涵。

crawler_浅谈网络爬虫的更多相关文章

  1. 浅谈网络爬虫爬js动态加载网页(二)

    没错,最后我还是使用了Selenium,去实现上一篇我所说的问题,别的没有试,只试了一下firefox的引擎,总体效果对我来说还是可以接受的. 继续昨天的话题,既然要实现上篇所说的问题,那么就需要一个 ...

  2. 浅谈网络爬虫爬js动态加载网页(一)

    由于别的项目组在做舆情的预言项目,我手头正好没有什么项目,突然心血来潮想研究一下爬虫.分析的简单原型.网上查查这方面的资料还真是多,眼睛都看花了.搜了搜对于我这种新手来说,想做一个简单的爬虫程序,所以 ...

  3. 浅谈网络爬虫爬js动态加载网页(三)

    上一篇讨论了web driver对动态网页的抓取与分析,可以很清楚的看出这是一种集中式处理方式,简单说,就是利用服务器,打开一个真正的brower,然后将需要解析的地址交给浏览器,浏览器去解析,然后将 ...

  4. 浅谈Scrapy爬虫(一)

    以下谈论的 scrapy 基于 0.20.2 版本(当前最新版本是 0.22.0 ),python 2.7.6. 开发环境是windows 7 sp1.   互联网上比较有价值的参考资料 1. Scr ...

  5. 浅谈 Scrapy 爬虫(二)

    越写越像官方文档的翻译,偏离了初衷.写一些官方文档里没有的内容吧.   在不限制宽带的环境下,根据页面的大小, Scrapy 一秒能爬取40-70个页面,一天在400万到600万页面.也就是说 Scr ...

  6. 浅谈网络I/O多路复用模型 select & poll & epoll

    http://blog.csdn.net/nk_test/article/details/50662946

  7. 浅谈爬虫 《一》 ===python

    浅谈爬虫 <一> ===python  ‘’正文之前先啰嗦一下,准确来说,在下还只是一个刚入门IT世界的菜鸟,工作近两年了,之前做前端的时候就想写博客来着,现在都转做python了,如果还 ...

  8. crawler_网络爬虫中编码的正确处理与乱码的解决策略

    转载: http://hi.baidu.com/erliang20088/item/9156132bdaeae8949c63d134 最近一个月一直在对nutch1.6版进行中等层次的二次开发,本来是 ...

  9. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

随机推荐

  1. T4模板合并js

    使用T4模板合并js文件 不知道该怎么表达,或许直接贴图贴代码更好 前因:在第一个使用angularjs的项目中我将所有的controller写到一个文件里面,深知维护起来那滋味,所以再次使用angu ...

  2. js比量undefined种类

    js比量undefined种类 if (reValue== undefined) {     alert("undefined"); } 发现推断不出来.最后查了下资料要用type ...

  3. javascript倒置再次被否定作用

    于javascript位反然后可以转换为浮点塑料,而不是更有效parseInt近两倍 var start = new Date().getTime(); for (var i = 0; i < ...

  4. 如何设置ubuntu自己主动的睡眠时间

    我相信很多在学习linux的过程中.总会遇到,不时系统会冬眠自己主动,因此,即使再次输入password.么重要的内容怕别人看 另外假设你常常使用像Putty这样子的远程登录软件的话,假设你的linu ...

  5. 介绍一款替代SSMS的sqlserver管理工具 toad for sqlserver5.7

    原文:介绍一款替代SSMS的sqlserver管理工具 toad for sqlserver5.7 toad for sqlserver5.7 虽然SSMS很好很强大,不过有时候使用一些第三方工具可以 ...

  6. Redis源代码分析(二十八)--- object创建和释放redisObject物

    今天的学习更有效率.该Rio分析过,学习之间的另一种方式RedisObject文件,只想说RedisObject有些生成和转换.都是很类似的.列出里面长长的API列表: /* ------------ ...

  7. 存储管理(两):openfiler它accounts

    存储管理(一个):openfiler演示和存储理解 openfiler的用户集中控制主要分为ldap和ad实现,当中openfiler本身可以作为ldapserver.使openfiler上的全部功能 ...

  8. 数据库管理——安全管理——识别SQLServer中空密码或者弱密码的登录名

    原文:数据库管理--安全管理--识别SQLServer中空密码或者弱密码的登录名 原文译自: http://www.mssqltips.com/sqlservertip/2775/identify-b ...

  9. SQL Server 2005中的CHECKSUM功能

    原文:SQL Server 2005中的CHECKSUM功能 转自此处 页面 checksum 是SQL2005的新功能,提供了一种比残缺页检测强大的机制检测IO方面的损坏.以下是详细描述: 页面 C ...

  10. 读改善c#代码157个建议:建议7~9

    目录: 建议7:将0值作为枚举的默认值 建议8:避免给枚举类型的元素提供显示的值 建议9:习惯运算符重载 一.建议7:将0值作为枚举的默认值 允许使用的枚举类型有:byte.sbyte.short.u ...