【Python爬虫开发基础④】爬虫原理

专栏python网络爬虫从基础到实战 欢迎订阅!近期还会不断更新~
往期推荐
【Python爬虫开发基础①】Python基础(变量及其命名规范)
【Python爬虫开发基础②】Python基础(正则表达式)
【Python爬虫开发基础③】Python基础(文件操作方法汇总)
前几篇文章已经介绍完了python的基本语法,包括变量、正则表达式以及文件的操作,接下来让我们把目光转向爬虫,了解一下爬虫的基本原理,让我们后面的学习更加的方便~



1 概述

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

我们可以从以下两个角度理解爬虫:

  1. 通过一个程序,根据URL进行爬取网页,获取有用的信息
  2. 使用程序来模拟浏览器,去向服务器发送请求,获取响应信息

那么爬虫的核心是什么呢?

  1. 爬取网页:爬取整个网页,包含了网页中所有得到的内容
  2. 解析数据:将网页中得到的数据进行解析

同时,我们做爬虫的难点:爬虫与反爬虫之间的博弈。


2 网络爬虫分类

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:

  • 通用网络爬虫(General Purpose Web Crawler)
  • 实例:百度等搜索引擎
  • 爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。
  • 功能:访问网页→抓取数据→数据存储→数据处理→提供检索服务
  • 策略
    (1)深度优先策略:其方法按照深度由低到高,依次访问下级网页链接,直到不能再深入为止。这种策略适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。
    (2)广度优先策略:此策略按照网页内容目录层次深浅爬行页面,处于较浅目录层次的页面首先被爬行。这种策略能够有效控制页面爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题。
  • 网站排名:根据PageRank算法值进行排名(可参考以下文章:PageRank原理及C语言实现
  • 聚焦网络爬虫(Focused Web Crawler)

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

  • 功能:根据需求,实现爬虫程序,抓取需要的数据
  • 策略
    (1)基于内容评价的爬行策略:DeBra将文本相似度的计算方法引入到网络爬虫中,提出了Fish Search算法,它将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关,其局限性在于无法评价页面与主题相关度的高低。Herseovic对 Fish Search算法进行了改进,提出了Sharksearch算法,利用空间向量模型计算页面与主题的相关度大小。
    (2)基于链接结构评价的爬行策略:Web页面作为一种半结构化文档,包含很多结构信息,可用来评价链接重要性。PageRank算法最初用于搜索引擎信息检索中对查询结果进行排序,也可用于评价链接重要性,具体做法就是每次选择PageRank值较大页面中的链接来访问。另一个利用Web结构评价链接价值的方法是HITS方法,它通过计算每个已访问页面的Authority权重和Hub权重,并以此决定链接的访问顺序。
    另外,还有基于增强学习的爬行策略基于语境图的爬行策略
  • 设计思路
    首先确定想要爬取的URL,然后模拟浏览器通过HTTP协议访问该URL,获取服务器返回的HTML代码;最后,解析得到的HTML字符串,获取需要的数据。
    这也就是我们最主要学习的爬虫方法。

除此之外,还有增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。


3 反爬手段

当然,每个网页不可能无限制的允许我们爬取数据。为此,他们往往设置了反爬手段,来组织我们通过爬虫获取数据。

下面来介绍几种特别常见的反爬手段:

  1. User-Agent:User Agent中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
  2. 代理IP(Proxy Server):的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。
  3. 验证码访问
  4. 动态加载网页:由于各种前端技术的渲染,网站返回的是js数据,并不是真实的数据。
  5. 数据加密
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为梦而生~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值