理解网络爬虫

爬虫的定义

网络爬虫时一种按照一定的规则自动地抓取网络信息的程序或者脚本。

爬虫的类型

  • 通用网络爬虫:又称为全网爬虫,常见的有百度、Google、必应等搜索引擎。
  • 聚焦网络爬虫:又称为主题网络爬虫,是选择性地爬行根据需求的主题相关页面的网络爬虫。
  • 增量式网络爬虫:对已下载网页采取增量式更新和只爬行新产生或者已经发生变化的网页的爬虫,它能够在一定程度上保证所爬行的页面尽可能是新的页面。
  • 深层网络爬虫:大部分内容不能通过静态URL获取的、隐藏在搜索表单后的、只有用户提交一些关键词才能获得的网络页面。

  聚焦网络爬虫、增量式网络爬虫和深层网络爬虫可以通俗地归纳为聚焦爬虫,因为这类爬虫都是定向爬取数据,比较有目的性,就是网络上经常说的网络爬虫,而通用爬虫在网络上通常称为搜索引擎。

爬虫的原理

通用网络爬虫的实现原理

  1. 获取初始的URL。
  2. 根据初始的URL爬取页面并获得新的URL。
  3. 从URL队列中读取新的URL,从而获得新的网页信息,同时在新网页中获取新URL, 并重复上述的爬取过程。
  4. 满足爬虫系统设置的停止条件时,停止爬取。

聚焦网络爬虫的实现原理

  1. 依据需求制定爬取的方案。
  2. 设定初始的URL。
  3. 根据初始的URL抓取页面,并获得新的URL。
  4. 从新的URL中过滤掉与需求无关的URL,将过滤后的URL放到URL队列中。
  5. 在URL队列中,根据搜索算法确定URL的优先级,并确定下一步要爬取的URL地址。
  6. 获得新的URL,将新的URL重复上述爬取过程。
  7. 满足系统中设置的停止条件或无法获取新的URL地址时,停止爬行。

爬虫的搜索策略

深度优先搜索

  在一个HTML文件中,当一个URL被选择后,被选URL将执行深度优先搜索,搜索后得到新的HTML文件,再从新的HTML获取新的URL进行搜索,以此类推,不断地爬取HTML中的URL,直到HTML中没有URL为止。

宽度优先搜索

   搜索完一个Web页面中所有的URL,然后继续搜索下一层,直到底层为止。

最佳优先搜索

   按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选择评价最好的一个或几个URL进行抓取。它只会访问经过网页分析算法预测为“有用”的网页。

反爬虫技术及解决方案

  • 用户请求的Headers:对于检测Headers的反爬虫,在爬虫发送请求中修改或者添加Headers就能很好地解决。
  • 用户操作的网站行为:遇到用户行为判断这种情况,可使用IP代理,IP可以在IP代理平台上通过API接口获取,每请求几次更换一个IP。还有一种解决方案是在每次请求间隔几秒后再发送下一次请求。只需在代码里加一个延时功能。有些有逻辑漏洞的网站可以通过请求几次、退出登录、重新登录、继续请求来绕过同一账号短时间内不能多次进行相同请求的限制。
  • 网站目录数据加载方式:首先分析网站设计,找到Ajax请求,分析具体的请求参数和响应的数据结构及其含义,在爬虫中模拟Ajax请求,就能获取所需数据。
  • 数据加密:可先找到加密代码,加密代码主要是使用JavaScript实现的,分析代码的加密方式,然后在爬虫代码中模拟其加密处理,再发送请求。另一种解决方案是使用Selenium+PhantomJS框架(自动化测试技术),调用浏览器内核,利用Selenium模拟人为操作网页并触发页面中的JS脚本,完整地实现自动化操作网页,数据是从网页上自动获取的。这套框架几乎能绕过大多数反爬虫,因为PhantomJS是一个没有界面的浏览器。Selenium+PhantomJS能解决很多事情。
  • 验证码识别:目前对复杂的验证码还没有做到很好地识别验证,只能通过第三方平台处理或者OCR技术识别。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值