0%

爬虫基础

有趣的技术

python本质:

一个自动化的程序

分类:

爬虫一般是通用爬取和聚焦爬取,而新手都是从通用爬取开始,就相当于对整个页面爬取。

工作过程:

  • 抓取
  • 分析
  • 存储

一、网络爬虫是什么意思

网络爬虫(英文:Web Crawler或Spider)又称为网络蜘蛛、网页蜘蛛或网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。网络爬虫是为搜索引擎从万维网上下载网页的程序,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

二、网络爬虫的分类

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General PURpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。 实际的网络爬虫系统通常是几种爬虫技术相结合实现的。

1、通用网络爬虫

通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。 由于商业原因,它们的技术细节很少公布出来。 这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。 虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。

通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL 队列、初始 URL 集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。 常用的爬行策略有:深度优先策略、广度优先策略。

(1)、深度优先策略:其基本方法是按照深度由低到高的顺序,依次访问下一级网页链接,直到不能再深入为止。 爬虫在完成一个爬行分支后返回到上一链接节点进一步搜索其它链接。 当所有链接遍历完后,爬行任务结束。 这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。

(2)、广度优先策略:此策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。 当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。 这种策略能够有效控制页面的爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题,实现方便,无需存储大量中间节点,不足之处在于需较长时间才能爬行到目录层次较深的页面。

2、聚焦网络爬虫

聚焦网络爬虫(Focused Crawler),又称主题网络爬虫(Topical Crawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。 和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。

聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。

3、增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。 和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构[包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL 集以及本地页面URL 集]。

增量式爬虫有两个目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。 为实现第一个目标,增量式爬虫需要通过重新访问网页来更新本地页面集中页面内容,常用的方法有:

(1)、统一更新法:爬虫以相同的频率访问所有网页,不考虑网页的改变频率;

(2)、个体更新法:爬虫根据个体网页的改变频率来重新访问各页面;

(3)、基于分类的更新法:爬虫根据网页改变频率将其分为更新较快网页子集和更新较慢网页子集两类,然后以不同的频率访问这两类网页。

4、Deep Web 爬虫

Web 页面按存在方式可以分为表层网页(Surface Web)和深层网页(Deep Web,也称 Invisible Web Pages 或 Hidden Web)。 表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面。Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。例如那些用户注册后内容才可见的网页就属于 Deep Web。 2000 年 Bright Planet 指出:Deep Web 中可访问信息容量是 Surface Web 的几百倍,是互联网上最大、发展最快的新型信息资源。

Deep Web 爬虫体系结构包含六个基本功能模块 (爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS 控制器)和两个爬虫内部数据结构(URL 列表、LVS 表)。 其中 LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。

三、网络爬虫的组成

在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、Html标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,并对其建立索引。

1、控制器

控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。

2、解析器

解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。

3、资源库

主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。

四、网络爬虫的基本步骤

1、首先选取一部分种子URL;

2、将这些URL放入待抓取URL队列;

3、从待抓取URL队列中取出待抓取的URL,解析DNS,得到主机的IP,并将URL对应的网页下载下来,存储到已下载网页库中,此外,将这些URL放入已抓取URL队列;

4、分析已抓取到的网页内容中的其他URL,并将URL放入待抓取URL队列,从而进入下一个循环。

五、网络爬虫的应用场景

1、搜索引擎抓取网页信息。

大家常用的搜索引擎的首要工作流程就是利用网络爬虫去爬取各个网站的页面。以百度蜘蛛为例,一旦有网站的页面更新了,百度蜘蛛就会出动,然后把爬取的页面信息搬回百度,再进行多次的筛选和整理。最终在大家搜索相关信息的时候,通过排名呈现给大家。可以说,没有网络爬虫,我们使用搜索引擎查询资料的时候,就不会那么便捷、全面和高效。

2、爬取需要数据进行统计。

冷数据启动时丰富数据的主要工具,新业务开始时,由于刚起步,所以没有多少数据,此时就需要爬取其他平台的数据来填充我们的业务数据。比如说,如果我们想做一个类似大众点评这样的平台,一开始没有商户等信息,就需要去爬取大众,美团等商家的信息来填充数据,比如天眼查,企查查,西瓜数据等等。

3、出行类软件通过爬虫抢票。

如果问网络爬虫技术应用最多的领域是什么?那一定是出行行业。相信每逢春运或是节假日,大家都用过一些抢票的软件,就为了获得一张机票或者是一张火车票,而这种出行类软件正是运用网络爬虫技术来达到抢票的目的。像抢票软件这样的网络爬虫,会不停地爬取交通出行的售票网站,一旦有票就会点击拍下来,放到自己的网站售卖。如果一定时间内没有人购买,就又会自动退票。然后又通过网站爬虫把票拍下来,到时间又继续退票,如此反复循环。

4、聚合平台整合信息进行比较。

如今,出现了很多比价平台、聚合电商还有返利平台等等给,这类聚合平台的本质都是提供横向数据比较,聚合服。比如说电商中经常需要有一种比价系统,从各大电商平台,如拼多多,淘宝,京东等抓取同一个商品的价格信息,以给用户提供最实惠的商品价格,这样就需要利用网络爬虫从各大电商平台爬取信息。

六、搜索引擎蜘蛛介绍

1、BaiduSpider(百度蜘蛛)

常见的百度蜘蛛有:Baiduspider 和 Baiduspider-image(抓取图片)。国内网站大多数流量都来自百度,所以推荐放行。

百度还有其它几个蜘蛛:

Baiduspider-video(抓取视频)

Baiduspider-news(抓取新闻)

Baiduspider-mobile(抓取wap)

百度蜘蛛介绍:http://www.baidu.com/search/spider.html

2、Googlebot(谷歌蜘蛛)

常见的谷歌蜘蛛有:Googlebot,还一个 Googlebot-Mobile ,不是很常见,看名字是应该是抓取 wap 页面的。世界第一大搜索引擎,推荐放行。

谷歌蜘蛛链接:http://www.google.com/bot.html

3、360Spider(360蜘蛛)

一个十分”勤奋抓爬”的蜘蛛。

360蜘蛛IP:https://www.so.com/help/spider_ip.html

4、Sogou web spider(搜狗蜘蛛)

搜狗公司还有其它几个蜘蛛:Sogou News Spider、Sogou inst spider、Sogou spider2、Sogou blog、Sogou Orion spider、Sogou web spider。

搜狗蜘蛛爬虫:http://www.sogou.com/docs/help/webmasters.htm

5、Bingbot(必应蜘蛛)

必应是微软的搜索引擎,微软的IE浏览器和Edge浏览器会默认使用该搜索引擎,而且占有率也还可以,不建议屏蔽。

必应蜘蛛爬虫:http://www.bing.com/bingbot.htm

6、Sosospider(SOSO蜘蛛)

腾讯soso,目前搜狗公司管理。

soso蜘蛛爬虫:http://help.soso.com/webspider.htm

7、Yahoo! Slurp China(雅虎中国)或 Yahoo! Slurp(雅虎英文)

雅虎蜘蛛爬虫:

雅虎中国:http://misc.yahoo.com.cn/help.html

雅虎英文:http://help.yahoo.com/help/us/ysearch/slurp

8、MSNBot,MSNot-media(MSN蜘蛛)

MSNBOT应该是 bing 搜索的蜘蛛,MSN和bing是一家的,可以只保留 Bingbot。

MSN蜘蛛爬虫:http://search.msn.com/msnbot.htm

9、YisouSpider(一搜蜘蛛/神马搜索)

神马搜索是UC和阿里2013年已经成立合资公司推出的移动搜索引擎。

该蜘蛛抓取频率还是很高的,很多人并不看好,不过如果屏蔽的话,会损失 UC浏览器 的流量来源。自己斟酌吧!

10、还有一些蜘蛛,不会给网站带来什么流量,站长看是否屏蔽。

YoudaoBot(有道蜘蛛):网易有道的蜘蛛,并不会带来流量。

JikeSpider(即刻蜘蛛):“即刻搜索”是由人民搜索网络股份公司于2011年6月20日推出的通用搜索引擎平台。

即刻蜘蛛:http://shoulu.jike.com/spider.html

ToutiaoSpider(头条号):今日头条的头条号蜘蛛,不能带来流量,屏蔽好啦。

来源:http //web toutiao com/media_cooperation

除了上述的爬虫,其他的就直接毫不犹豫的禁掉。

最后总结

在信息大爆炸的时代,网络爬虫可以代替手工做很多事情,比如可以用于做搜索引擎,也可以爬取网站上面的图片等,网络爬虫可以更高效率地利用好互联网中的有效信息。

本文来源:https://www.youhuaxing.cn/seojianzhan/17484.html