浅析python 通⽤爬⾍和聚焦爬⾍


Posted in Python onSeptember 28, 2020

一、爬虫的简单理解

1. 什么是爬虫?

网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。

2. 爬虫有什么作用?

通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。

3. 爬虫业界的情况

目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采集、大数据分析,这是必备手段,并且很多公司都设立了爬虫工程师的岗位。

4. 合法性

爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示的数据信息。因为信息是完全公开的,所以是合法的。其实就像浏览器一样,浏览器解析响应内容并渲染为页面,而爬虫解析响应内容采集想要的数据进行存储。

5. 反爬虫

爬虫很难完全的制止,道高一尺魔高一丈,这是一场没有硝烟的战争,码农VS码农

反爬虫一些手段:

  • 合法检测:请求校验(useragent,referer,接口加签名,等)
  • 小黑屋:IP/用户限制请求频率,或者直接拦截
  • 投毒:反爬虫高境界可以不用拦截,拦截是一时的,投毒返回虚假数据,可以误导竞品决策

二、通用爬虫

根据使⽤场景,⽹络爬⾍可分为 通⽤爬⾍ 和 聚焦爬⾍ 两种.。

1、通⽤爬⾍

通⽤⽹络爬⾍是?人饕?妫?aidu、Google、Yahoo)抓取系统的重要组成部分。主要⽬的是将互联⽹上的⽹⻚下载到本地,形成⼀个互联⽹内容的镜像备份。

⽹络爬⾍的基本⼯作流程如下:

  1. ⾸先选取⼀部分精⼼挑选的种⼦URL;
  2. 将这些 URL 放⼊待抓取 URL 队列;
  3. 从待抓取 URL 队列中取出待抓取在 URL,解析 DNS,并且得到主机的 ip,并将 URL 对应的⽹⻚下载下来,存储进已下载⽹⻚库中。此外,将 这些 URL 放进已抓取 URL 队列。
  4. 分析已抓取 URL 队列中的 URL,分析其中的其他 URL,并且将 URL放⼊ 待抓取 URL 队列,从⽽进⼊下⼀个循环....

浅析python 通⽤爬⾍和聚焦爬⾍

2、通⽤搜索引擎(Search Engine)⼯作原理

随着⽹络的迅速发展,万维⽹成为⼤量信息的载体,如何有效地提取并利⽤这些信息成为⼀个巨⼤的挑战,通常⽤户会通过搜索引擎(Yahoo,Google,百度等),来作为访问万维⽹的⼊⼝。

⽽ 通⽤⽹络爬⾍ 是搜索引擎系统中⼗分重要的组成部分,它负责从互联⽹中搜集⽹⻚,采集信息,这些⽹⻚信息⽤于为搜索引擎建⽴索引从⽽提供⽀持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。

浅析python 通⽤爬⾍和聚焦爬⾍

第⼀步:抓取⽹⻚

搜索引擎通过⼀种有特定规律的软件,来跟踪⽹⻚的链接,从⼀个链接爬到另外⼀个链接,像蜘蛛在蜘蛛⽹上爬⾏⼀样,所以被称为“蜘蛛”也被称为“机器⼈”。

但是搜索引擎蜘蛛的爬⾏是被输⼊了⼀定的规则的,它需要遵从⼀些命令或⽂件的内容。
Robots 协议(也称为爬⾍协议、机器⼈协议等)的全称是“⽹络爬⾍排除标准”(Robots Exclusion Protocol),⽹站通过 Robots 协议告诉搜索引擎哪些⻚⾯可以抓取,哪些⻚⾯不能抓取

https://www.taobao.com/robots...
http://www.qq.com/robots.txt

robots.txt 只是约定,爬⾍遵守或者不遵守完全在于爬⾍作者的意愿。举个例⼦,公交⻋上贴着「请为⽼弱病残孕让座」,但是⼤部分⼈并不⻅得会遵守。⼀般来讲,只有⼤的搜索引擎爬⾍会遵守你⽹站的 robots.txt 协议,其它的爬⾍基本都不会看⼀眼你的 robots.txt 写的是什么。

第⼆步:数据存储

搜索引擎是通过蜘蛛跟踪链接爬⾏到⽹⻚,并将爬⾏的数据存⼊原始⻚⾯数据库。其中的⻚⾯数据与⽤户浏览器得到的 HTML 是完全⼀样的。搜索引擎蜘蛛在抓取⻚⾯时,也做⼀定的重复内容检测,⼀旦遇到权重很低的⽹站上有⼤量抄袭、采集或者复制的内容,很可能就不再爬⾏。

第三步:预处理

搜索引擎将蜘蛛抓取回来的⻚⾯,进⾏各种步骤的预处理。

  • 提取⽂字
  • 中⽂分词
  • 去停⽌
  • 消除噪⾳(搜索引擎需要识别并消除这些噪声,⽐如版权声明⽂字、导 航条、⼴告等……)
  • 正向索引
  • 倒排索
  • 引链接关系计算
  • 特殊⽂件处理
  • ....

除了 HTML⽂件外,搜索引擎通常还能抓取和索引以⽂字为基础的多种⽂件类型,如 PDF、Word、WPS、XLS、PPT、TXT ⽂件等。我们在搜索结果中也经常会看到这些⽂件类型。

但搜索引擎还不能处理图⽚、视频、Flash 这类⾮⽂字内容,也不能执⾏脚本和程序。

第四步:排名,提供检索服务
搜索引擎是根据⼀定的策略、运⽤特定的计算机程序从互联⽹上搜集信息,在对信息进⾏组织和处理后,为⽤户提供检索服务,将⽤户检索相关的信息展示给⽤户的系统。

但是,这些通⽤性搜索引擎也存在着⼀定的局限性:

  1. 不同领域、不同背景的⽤户往往具有不同的检索⽬的和需求,通⽤搜索引擎所返回的结果包含⼤量⽤户不关⼼的⽹⻚。
  2. 通⽤搜索引擎的⽬标是尽可能⼤的⽹络覆盖率,有限的搜索引擎服务器资源与⽆限的⽹络数据资源之间的⽭盾将进⼀步加深。
  3. 万维⽹数据形式的丰富和⽹络技术的不断发展,图⽚、数据库、⾳频、视频多媒体等不同数据⼤量出现,通⽤搜索引擎往往对这些信息含量密集且具有⼀定结构的数据⽆能为⼒,不能很好地发现和获取。
  4. 通⽤搜索引擎⼤多提供基于关键字的检索,难以⽀持根据语义信息提出的查询。

三、聚焦爬⾍(Focused Crawler)

  • 聚焦爬⾍,⼜称主题爬⾍(或专业爬⾍),是“⾯向特定主题”的⼀种⽹络爬⾍程序。它与我们通常所说的爬⾍(通⽤爬⾍)的区别之处就在于,聚焦爬⾍在实施⽹⻚抓取时要进⾏主题筛选。它尽量保证只抓取与主题相关的⽹⻚信息。
  • 聚焦⽹络爬⾍并不追求⼤的覆盖,⽽将⽬标定为抓取与某⼀特定主题内容相关的⽹⻚,为⾯向主题的⽤户查询准备数据资源。
  • 聚焦爬⾍的⼯作流程较为复杂,需要根据⼀定的⽹⻚分析算法过滤与主题⽆关的链接,保留有⽤的链接并将其放⼊等待抓取的 URL 队列。然后,它将根据⼀定的搜索策略从队列中选择下⼀步要抓取的⽹⻚URL,并重复上述过程,直到达到系统的某⼀条件时停⽌。
  • 另外,所有被爬⾍抓取的⽹⻚将会被系统存贮,进⾏⼀定的分析、过滤,并建⽴索引,以便之后的查询和检索;对于聚焦爬⾍来说,这⼀过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

以上就是浅析python 通⽤爬⾍和聚焦爬⾍的详细内容,更多关于python 爬虫的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
利用python将json数据转换为csv格式的方法
Mar 22 Python
Python使用字典的嵌套功能详解
Feb 27 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
简单了解python单例模式的几种写法
Jul 01 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Django更新models数据库结构步骤
Apr 01 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
用python写PDF转换器的实现
Oct 29 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
Python实现简单猜数字游戏
Feb 03 Python
Python使用Web框架Flask开发项目
Jun 01 Python
Scrapy 配置动态代理IP的实现
Sep 28 #Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 #Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 #Python
小结Python的反射机制
Sep 28 #Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 #Python
scrapy结合selenium解析动态页面的实现
Sep 28 #Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 #Python
You might like
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
自定义PHP分页函数
2006/10/09 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
python对于requests的封装方法详解
2019/01/03 Python
Pytorch to(device)用法
2020/01/08 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
七一表彰活动方案
2014/01/18 职场文书
新法人代表任命书
2014/06/06 职场文书
工作说明书格式
2014/07/29 职场文书
运动会加油稿100字
2014/09/19 职场文书
计划生育诚信协议书
2014/11/02 职场文书
培训心得体会怎么写
2016/01/25 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python
MySQL学习之基础命令实操总结
2022/03/19 MySQL