网站运营内容,可视化微信小程序制作工具,如何进行品牌营销,莒县做网站的电话本节书摘来自华章计算机《Python爬虫开发与项目实战》一书中的第3章#xff0c;第3.1节#xff0c;作者#xff1a;范传辉著#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 第3章 初识网络爬虫 从本章开始#xff0c;将正式涉及Python爬虫的开发。本章… 本节书摘来自华章计算机《Python爬虫开发与项目实战》一书中的第3章第3.1节作者范传辉著更多章节内容可以访问云栖社区“华章计算机”公众号查看 第3章 初识网络爬虫 从本章开始将正式涉及Python爬虫的开发。本章主要分为两个部分一部分是网络爬虫的概述帮助大家详细了解网络爬虫另一部分是HTTP请求的Python实现帮助大家了解Python中实现HTTP请求的各种方式以便具备编写HTTP网络程序的能力。 3.1 网络爬虫概述 本节正式进入Python爬虫开发的专题接下来从网络爬虫的概念、用处与价值和结构等三个方面让大家对网络爬虫有一个基本的了解。3.1.1 网络爬虫及其应用 随着网络的迅速发展万维网成为大量信息的载体如何有效地提取并利用这些信息成为一个巨大的挑战网络爬虫应运而生。网络爬虫又被称为网页蜘蛛、网络机器人是一种按照一定的规则自动地抓取万维网信息的程序或者脚本。下面通过图3-1展示一下网络爬虫在互联网中起到的作用 网络爬虫按照系统结构和实现技术大致可以分为以下几种类型通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。 搜索引擎Search Engine例如传统的通用搜索引擎baidu、Yahoo和Google等是一种大型复杂的网络爬虫属于通用性网络爬虫的范畴。但是通用性搜索引擎存在着一定的局限性 1不同领域、不同背景的用户往往具有不同的检索目的和需求通用搜索引擎所返回的结果包含大量用户不关心的网页。 2通用搜索引擎的目标是尽可能大的网络覆盖率有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 3万维网数据形式的丰富和网络技术的不断发展图片、数据库、音频、视频多媒体等不同数据大量出现通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力不能很好地发现和获取。 4通用搜索引擎大多提供基于关键字的检索难以支持根据语义信息提出的查询。 为了解决上述问题定向抓取相关网页资源的聚焦爬虫应运而生。 聚焦爬虫是一个自动下载网页的程序它根据既定的抓取目标有选择地访问万维网上的网页与相关的链接获取所需要的信息。与通用爬虫不同聚焦爬虫并不追求大的覆盖而将目标定为抓取与某一特定主题内容相关的网页为面向主题的用户查询准备数据资源。 说完了聚焦爬虫接下来再说一下增量式网络爬虫。增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫它能够在一定程度上保证所爬行的页面是尽可能新的页面。和周期性爬行和刷新页面的网络爬虫相比增量式爬虫只会在需要的时候爬行新产生或发生更新的页面并不重新下载没有发生变化的页面可有效减少数据下载量及时更新已爬行的网页减小时间和空间上的耗费但是增加了爬行算法的复杂度和实现难度。例如想获取赶集网的招聘信息以前爬取过的数据没有必要重复爬取只需要获取更新的招聘数据这时候就要用到增量式爬虫。 最后说一下深层网络爬虫。Web页面按存在方式可以分为表层网页和深层网页。表层网页是指传统搜索引擎可以索引的页面以超链接可以到达的静态网页为主构成的Web页面。深层网络是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的只有用户提交一些关键词才能获得的Web页面。例如用户登录或者注册才能访问的页面。可以想象这样一个场景爬取贴吧或者论坛中的数据必须在用户登录后有权限的情况下才能获取完整的数据。 本书除了通用性爬虫不会涉及之外聚焦爬虫、增量式爬虫和深层网络爬虫的具体运用都会进行讲解。下面展示一下网络爬虫实际运用的一些场景 1常见的BT网站通过爬取互联网的DHT网络中分享的BT种子信息提供对外搜索服务。如图3-2所示。 2一些云盘搜索网站通过爬取用户共享出来的云盘文件数据对文件数据进行分类划分从而提供对外搜索服务。如图3-3所示。 3.1.2 网络爬虫结构 下面用一个通用的网络爬虫结构来说明网络爬虫的基本工作流程如图3-4所示。 网络爬虫的基本工作流程如下 1首先选取一部分精心挑选的种子URL。 2将这些URL放入待抓取URL队列。 3从待抓取URL队列中读取待抓取队列的URL解析DNS并且得到主机的IP并将URL对应的网页下载下来存储进已下载网页库中。此外将这些URL放进已抓取URL队列。 4分析已抓取URL队列中的URL从已下载的网页数据中分析出其他URL并和已抓取的URL进行比较去重最后将去重过的URL放入待抓取URL队列从而进入下一个循环。 这便是一个基本的通用网络爬虫框架及其工作流程在之后的章节我们会用Python实现这种网络爬虫结构。