crawler_浅谈网络爬虫

题记:php

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

提纲:java

    1:是什么python

    2:能作什么jquery

    3:怎么作chrome

  4:综述浏览器

      1:是什么cookie

    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:综述

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

不免疏忽,望你们海涵。

 

转载于:https://www.cnblogs.com/cphmvp/p/4047703.html