浅析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(Tornado)模拟登录小米抢手机
Nov 12 Python
python3中bytes和string之间的互相转换
Feb 09 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python求解任意闭区间的所有素数
Jun 10 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
pandas 对group进行聚合的例子
Dec 27 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
python 19个值得学习的编程技巧
Aug 15 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 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实现网站插件机制的方法
2009/11/10 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
React简单介绍
2017/05/24 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
python 切换root 执行命令的方法
2019/01/19 Python
python分数表示方式和写法
2019/06/26 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
爱国演讲稿500字
2014/05/04 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
植物园观后感
2015/06/11 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python
DE1107机评
2022/04/05 无线电