题记:

  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. Reveal:分析iOS UI该武器

    Reveal是分析iOS应用UI的利器: Reveal可以在执行时调试和改动iOS应用程序.它能连接到应用程序,并同意开发人员编辑各种用户界面參数.这反过来会马上反应在程序的UI上.就像用FireBu ...

  2. UI —— 计算器

    #import <UIKit/UIKit.h> @interface MyViewController :UIViewController { NSInteger _firstName; ...

  3. 【转】Directx11 SDK文档

    原文地址:http://blog.csdn.net/cmt100/article/details/6343274 总结 这是一个初步的教程.我们将通过必要的步骤来创建一个Win32 Applicati ...

  4. Microsoft Toolkit 2.5下载 – 一键激活Windows 8.1/2012 R2/Office 2013

    http://www.dayanzai.me/microsoft-toolkit-2-5.html

  5. Win7设置局域网共享

    Win7设置局域网共享 1. 把win7的guest用户开启. 打开win7的控制面板=>用户账号与安全=>用户账户=>管理其他用户=>点击guest用户,进行开启. 2.解决 ...

  6. 文件搜索神器 Everything

    Everything 是一款 NTFS 磁盘格式下的文件搜索工具,1月5日发布测试版本 1.3.0.631b Beta,增加文件列表.收藏夹.自定义快捷键.高级搜索等功能,取消了比较实用的 etp/f ...

  7. ACdream: ACfun

    ACfun Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisti ...

  8. Android开发技巧——实现在图标文本底部导航栏(更新)

    本文参考了导航栏的代码viewpagerindicator实现. 本文介绍了之前版本号qq或者微信,添加文本,实现图标,导航栏的底部. 2014-09-14 13:59:42更新:library的代码 ...

  9. 【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动态调节

    意甲冠军: 一些树高给出.行一种操作:把某棵树增高h,花费为h*h. 操作完毕后连线,两棵树间花费为高度差*定值c. 求两种花费加和最小值. 题解: 跟NOIP2014 D1T3非常像. 暴力动规是O ...

  10. Scan IP relocate/failover其它段后不能ping通过

    或手动集群重启单个节点srvctl relocate scan_listener后.群集网络段ping IP,VIP.SCAN IP正常.其他段ping SCAN IP 不通.其原因是,该路由ARP表 ...