爬虫介绍

2017-12-05  本文已影响0人  蜻蜓小子

培训计划:


image.png
爬虫的概念

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

爬虫的应用场景
爬虫的分类

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

1. 通用网络爬虫:

通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低。通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。

2.聚焦网络爬虫

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

3.增量网络爬虫

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

4.Deep Web 爬虫

Web 页面按存在方式可以分为表层网页(Surface Web)和深层网页(Deep Web,也称 Invisible Web Pages 或 Hidden Web)。 表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面。Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。

常用的爬虫策略

网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。

目标页面的分析

1. 非JS渲染出来的页面

像这种后台已经封装好数据并直接返回而且前端不会再做特殊处理的页面,是比较好抓取,可以使用jsoup 或者httpclient等工具直接解析。

2. 使用JS渲染出来的页面

现在js渲染出的页面越来越多。对于爬虫来说,这种页面是比较讨厌的:仅仅提取HTML内容,往往无法拿到有效的信息。目前比较通用的方式有以下两种:

3.如何判断前端渲染

判断页面是否为js渲染的方式比较简单,在浏览器中直接查看源码(Windows下Ctrl+U,Mac下command+alt+u),如果找不到有效的信息,则基本可以肯定为js渲染。

可能遇到的防爬虫手段

大部分情况下,反爬虫的需求是不能影响到网站正常使用的,一个网站的功能性需求一定高于反爬虫需求,所以大部分网站反爬虫一定不会恶心到正常用户的使用。

爬取页面过程中可能遇到的防爬虫手段,以及对应的策略:

滑块验证

不过实际应用的时候,一般大家做到根据 IP 限制频次就结束了,除非很核心的数据,否则不会再进行更多的验证了,毕竟工程的问题一半是成本的问题。

常用的爬虫框架

后面会着重介绍的框架,实践。

Webmagic

Webmagic的文档:http://webmagic.io/docs/zh/

至于高效部分,一些 Tips:
1.尽量减少请求次数,能抓列表页就不抓详情页
2.不要只看 Web 网站,还有 App 和 H5,他们的反爬虫措施一般比较少
3.如果真的对性能要求很高,可以考虑多线程(一些成熟的框架如 scrapy,webmagic等都已支持),甚至分布式。

爬虫的行为,本质上就是模拟浏览器发送HTTP请求,所以要想在爬虫领域深耕细作,理解 HTTP 协议是必须的。

上一篇下一篇

猜你喜欢

热点阅读