Statistics
50
Views
0
Downloads
0
Donations
Uploader

高宏飞

Shared on 2025-12-04
Support
Share

Author邓维;李贝;汤小洋 主编;康毅滨;林海玉;刘燕秋;林建雄;刘庆胜;钟晓颖 副主编

网络爬虫技术的重点之一是网络爬虫框架,因此本书结合网络爬虫框架的相关案例重点介绍网络爬虫的常见框架,包括PySpider网络爬虫框架的安装和使用,Scrapy网络爬虫框架的安装和使用,以及Scrapy 网络爬虫管理与部署。另外,本书对Python网络爬虫开发需要的reguests库、Scrapy解析库、存储库、XPath进行了介绍,并介绍了requests库、正则表达式、XPath等的使用方法,还重点讲解了这些库的实际应用。 本书以Python网络爬虫开发为主线,兼顾理论与实战,全面介绍可操作的Python环境与系统开发相关知识,以及大数据算法、大数据分析、大数据系统互补的作用。另外,本书还赠送课程大纲、教学课件PPT、实验手册、各章习题及答案、期末试卷及答案、教学和实验视频,方便教师授课。

Tags
No tags
Publisher: 清华大学出版社
Publish Year: 2022
Language: 中文
Pages: 451
File Format: PDF
File Size: 18.8 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
(This page has no text content)
版权信息 COPYRIGHT 书名:Python网络爬虫技术与应用 作者:邓维;李贝;汤小洋 主编;康毅滨;林海玉;刘燕秋;林建 雄;刘庆胜;钟晓颖 副主编 出版社:清华大学出版社 出版时间:2022年6月 ISBN:9787302607496 字数:137千字 本书由清华大学出版社有限公司授权得到APP电子版制作与发行 版权所有·侵权必究
内容简介 网络爬虫技术的重点之一是网络爬虫框架,因此本书结合网络爬虫框 架的相关案例重点介绍网络爬虫的常见框架,包括PySpider网络爬虫 框架的安装和使用,Scrapy网络爬虫框架的安装和使用,以及Scrapy 网络爬虫管理与部署。另外,本书对Python网络爬虫开发需要的 reguests库、Scrapy解析库、存储库、XPath进行了介绍,并介绍了 requests库、正则表达式、XPath等的使用方法,还重点讲解了这些库 的实际应用。 本书以Python网络爬虫开发为主线,兼顾理论与实战,全面介绍可操 作的Python环境与系统开发相关知识,以及大数据算法、大数据分 析、大数据系统互补的作用。另外,本书还赠送课程大纲、教学课件 PPT、实验手册、各章习题及答案、期末试卷及答案、教学和实验视 频,方便教师授课。 本书可作为高等院校大数据、计算机、电子信息、软件技术相关专业 研究生和高年级本科生的教材,也可作为大数据及编程爱好者的参考 用书。
前言 PREFACE 网络爬虫,也被称为网络机器人,能够帮助并取代在互联网上自动收 集和组织数据的人。在大数据时代,信息收集是一项重要的任务,例 如在搜索引擎中抓取和收集网站,在数据分析和挖掘中收集数据,在 财务分析中收集财务数据。如果仅仅依靠人力资源来收集信息,不仅 效率低下、操作烦琐,还会增加信息收集的成本。此时,可以使用网 络爬虫来自动收集数据和信息。此外,Web爬虫还可以应用于舆情监测 与分析、目标客户数据收集等领域。 使用Python是爬虫的最佳方式,因为它对初学者更友好,且原理简 单,通过几行代码就可以实现基本的爬虫,其学习过程更流畅,能让 学习者感受到更大的成就感。 在掌握基本的爬虫程序之后,学生将更加熟悉Python数据分析、Web开 发,甚至机器学习。在此过程中,学生将熟悉基本的Python语法、库 的使用以及如何查找文档。 本书内容 本书全面系统地讲解Python网络爬虫的体系应用,由浅入深地介绍网 络爬虫方面的技术知识,对基于Python网络爬虫领域的技术做全面的 介绍。原理部分,主要突出网络爬虫的理论基础,原生态网络爬虫中 正则表达式与requests库的使用,HTML内容解析模拟浏览器模拟登录 模拟验证的应用,Python与数据库的连接与使用,网络爬虫框架的介 绍与实际应用等。系统开发环境配置与搭建部分,通过实例系统讲解 Python环境的安装、部署、环境搭建、配置、应用程序部署等一系列 过程,帮助学生搭建Python开发环境。 网络爬虫技术的重点之一是网络爬虫框架,因此本书首先重点介绍网 络爬虫的常见框架,再结合网络爬虫框架的相关案例介绍PySpider网 络爬虫框架的安装和使用,Scrapy网络爬虫框架的安装和使用,以及 Scrapy网络爬虫管理与部署。另外,因为Python网络爬虫开发需要 reguests库、Scrapy解析库、存储库、XPath的配合,本书还介绍了
requests库、正则表达式、XPath等的使用方法,重点讲解这些库的实 际应用。 本书共分为7章,邓维负责全书的统稿工作,第1~4章由李贝编写,第 5章到第6章由汤小洋编写,第7章由康毅斌、林海玉、刘燕秋、林建 雄、刘庆胜、钟晓颖统一编写。 在Python网络爬虫的体系应用中,Scrapy与PySpide是非常重要的 Python网络爬虫框架,读者通过学习,可以掌握Scrapy和PySpider的 安装、配置和使用,以及实现基本的案例。 本书以Python网络爬虫开发为主线,兼顾理论与实战,全面介绍可操 作的Python环境与系统开发相关知识,以及大数据算法、大数据分 析、大数据系统互补的作用,可以互相参考。 本书使用对象 · 计算机编程爱好者。 适合掌握Python、网络爬虫等技术的读者,按照书中的流程,一步步 从环境的准备到基本库、常见框架的开发和部署,直到案例开发的完 成。 · 开设有Python相关课程的高校教师和学生。 如今,国内很多高校计算机、自动化、电子信息、大数据等专业均开 设了大数据相关课程,但是绝大部分均以理论介绍为主,单纯的理论 教学过于抽象,学生理解起来比较困难,教学效果不理想。本书所介 绍的内容以实践为主、理论为辅,注重学生操作跟实际接轨,使学生 对所学知识更感兴趣、更容易接受。 本书赠送资源 本书赠送课程大纲、教学课件PPT、实验手册、各章习题及答案、期末 试卷及答案、教学和实验视频,读者可分别扫描下方二维码获取。
▲课程大纲 ▲教学课件PPT ▲实验手册 ▲习题及答案 ▲期末试卷及答案
▲教学和实验视频(上) 教学和实验视频(下)
第1章 网络爬虫概述
本章学习目标 · 了解什么是网络爬虫。 · 了解网络爬虫的搜索和策略。 · 了解反网络爬虫技术及解决方案。 本章先向读者介绍网络爬虫技术的概念和流程,再介绍数据采集的基 本思想及网络爬虫的搜索和策略,最后介绍反网络爬虫技术及解决方 案。
1.1 网络爬虫简介 1.1.1 网络爬虫的概念与类别 1.概念 当前社会已经迈入大数据时代,互联网中的数据是海量的,如何自动 高效地获取互联网中有用的信息是一个重要问题,而网络爬虫技术就 是为解决这些问题而生的。 当下的网络就像一张大型的蜘蛛网,分布于蜘蛛网各个节点的即是数 据,那么Web Crawler(网络爬虫)即是小蜘蛛,沿着网络“捕获” 食物(即数据),而网络爬虫是指按照一定的规则,自动地抓取网络 信息的程序或者脚本。从专业角度来讲,请求目标的行为是经由程序 模仿搜索引擎发出的,爬到本地的是目标返回的HTML代码、JSON数 据、二进制数据、图片、视频等,从中提取需要的数据并存储起来使 用。 2.常见的网络爬虫 搜索引擎如何获得一个新网站的URL?主要描述如下: (1)主动向搜索引擎提交网站。 (2)在其网站里设置外联。 (3)搜索引擎会和DNS服务商进行合作,能够快速采集新的网站。 常见的网络爬虫有以下几种。 · 通用网络爬虫:也叫全网爬虫,主要为门户网站站点搜索引擎和 大型Web服务提供商采集网络数据。
通用网络爬虫并不是一切皆可爬取,它也要遵循Robots协议。通用网 络爬虫的工作流程为:抓取网页→存储数据→内容处理→提供检索→ 排名服务。 通用网络爬虫的缺点有:仅提供与文本相关的内容(如HTML、Word、 PDF等),而无法提供多媒体文件(如音乐、图片、视频)和二进制文 件,提供的结果一成不变,无法针对不同背景领域的人提供不同的搜 索结果,不能提供人类语义上的检索;具有局限性,所返回的网页里 90%的内容无用,中文搜索引擎的自然语言检索理解困难,信息占有量 和覆盖率存在局限,以关键字搜索为主是搜索引擎最主要的作用之 一,对于图片、数据库、音频、视频多媒体的内容无计可施;搜索引 擎的社区化和个性化欠缺,大多数搜索引擎无法考虑人的地域、性 别、年龄的差别,且抓取动态网页效果不好。 · 聚焦网络爬虫:网络爬虫程序员写的针对某种内容的网络爬虫, 面向主题网络爬虫、面向需求网络爬虫,会针对某种特定的内容去抓 取信息,并且保证内容需求尽可能相关。聚焦网络爬虫是为解决通用 网络爬虫的缺点而出现的。 · 积累式网络爬虫:从头到尾,不断抓取,过程中会进行反复操 作。 · 增量式网络爬虫:采用增量式更新和仅抓取新产生的或者已经发 生变化的网页的网络爬虫,出现在已下载的网页。 · 深层网络爬虫:Web页面按存在方式可以分为表层网页 (Surface Web)和深层网页(Deep Web)。表层网页是指传统搜索 引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页 面。深层网页是指那些大部分内容不能通过静态链接获取的、隐藏在 搜索表单后的,只有用户提交一些关键词才能获得的Web页面。 3.增量式网络爬虫 增量式网络爬虫(Incremental Web Crawler)的体系结构包括爬行 模块、排序模块、更新模块、本地页面集、待爬行URL集及本地页面 URL集。 增量式网络爬虫为确保本地页面集中存储的页面是最新页面并进一步 提高本地页面集中页面的质量,经常使用的方法有:
(1)统一更新法:网络爬虫以相同的频率访问全部网页,不考虑网页 的改变频率。 (2)个体更新法:网络爬虫按照个体网页的改变的频率重新访问各页 面。 (3)基于分类的更新法:网络爬虫根据网页改变的频率把页面划分为 更新较快网页子集和更新较慢网页子集两类,而后以不同的频率访问 这两类网页。 为实现个体更新法,增量式网络爬虫需要对网页的重要性排序,一般 常用的策略有广度优先策略、PageRank优先策略等。IBM开发的 WebFountain增量式网络爬虫功能强大,它采用一个优化模型控制爬行 过程,并没有对页面变动过程做一概统计假设,而是按照先前爬行周 期里的爬行成果和网页的实际变化速度对页面的更新频率进行调整, 采用的是一种自适应的方法。北京大学的天网增量爬行系统的目的是 爬行国内Web,把网页划分为变化网页和新网页两类,分别采用不同爬 行策略。为减缓对大量网页变化历史维护导致的性能难题,它按照网 页变化的时间局部性规律,在短时期内直接爬行屡次变化的网页,为 尽快取得新网页,它操纵索引型网页追踪新出现的网页。 4.深层网络爬虫 1)基于领域知识的表单填写 此方式一般会维持一个本体库,经由语义分析来选取合适的关键词填 写表单。利用一个预定义的领域本体知识库来识别深层网页的页面内 容,同时利用一些来自Web站点的导航模式来辨认主动填写表单时所需 进行的路径导航。 2)基于网页结构分析的表单填写 此方式通常无领域知识或有唯一有限的领域知识,把网页表单表示成 DOM树,从中提取表单各字段值。Desouky等提出一种LEHW方法。该方 法把HTML网页表示为DOM树形式,把表单区分为单属性表单和多属性表 单,分别进行处理;孙彬等提出一种基于XQuery的搜索系统,它能够 模拟表单和特殊页面的标记切换,把网页关键字切换信息描述为三元 组单元,依照一定规则排除无效表单,把Web文档构造成DOM树,利用 XQuery把文字属性映射到表单字段。
1.1.2 网络爬虫的流程 1.基本流程 捜索引擎抓取系统的主要组成部分是网络爬虫,把互联网上的网页下 载到本地形成一个联网内容的镜像备份是网络爬虫的主要目标。 网络爬虫的基本工作流程如下:一开始选取一部分精心挑选的种子 URL;把这些URL放入URL队列中;从URL队列中取出待抓取的URL,读取 URL之后开始解析DNS,并把URL对应的网页下载下来,放进网页库中。 此外,把这些URL放入已抓取URL队列。 分析已抓取URL队列中的URL,并且把URL放入待抓取URL队列,使其进 入下一个循环。网络爬虫的基本流程如图1-1所示。 图1-1 网络爬虫的基本流程
用简短易懂的方式来讲,即分为四个步骤:发送请求→获取响应内容 →解析内容→保存数据。请求流程如图1-2所示。 图1-2 请求流程图 2.从网络爬虫的角度对互联网进行划分 从网络爬虫的角度可将互联网划分为以下五种: (1)已下载未过期网页。 (2)已下载已过期网页:抓取到的网页实际上是互联网内容的一个镜 像与备份,互联网是动态变化的,一部分互联网上的内容已经发生变 化,这时这部分抓取到的网页就已经失效。 (3)待下载网页:是指待抓取URL队列中的那些页面。 (4)可知网页:尚未抓取下来,也没有在待抓取URL队列中,但是能 够经由对已抓取页面或者待抓取URL对应页面进行分析获得的URL,认 为是可知网页。 (5)不可知网页:还有一部分网页,网络爬虫是无法直接抓取下载 的,称为不可知网页。 网页类别划分如图1-3所示。 3.网页抓取的基本原理 常见的叫法是网页抓屏(Screen Scraping)、数据挖掘 (Data Mining)、网络收割(Web Harvesting)或其类似的叫法。 理论上,网页抓取是一种经由多种方法收集网络数据的方式,不仅是 经由与API交互的方式。
最常用的方法是确定爬取的URL,确定数据存储格式,写一个自动化程 序向网络服务器请求数据(通常是用HTML表单或其网页文件),而后 对数据进行清洗解析,汲取需要的信息并存入数据库,基本思路如图 1-4所示。 ▲图1-3 网页划分类别
图1-4 基本思路图 4.目标源选择 目标源选择应依照以下条件进行排序:数据相关性、易抓取程度、数 据量、Robots协议。当然,根据自己的需求能够自由变更。同等情况 下尽量避免大型企业的官网,因为其中大部分都设有反爬机制。 5.编辑网络爬虫 推荐使用的库有requests、BeautifulSoup、Scrapy、Selenium,假如 关于效率需求不是特别高,能够考虑使用requestspost请求采集页 面,而后使用BeautifulSoup分析页面标签,这样实现较为简短易懂, 也能解决大部分需求;假如对效率比较重视,或需要完成一个工程化 的采集项目,Scrapy能够作为首选。对分布式处理的良好支持和清晰 的模块化层次在提升效率的同时更易于进行代码的管理。对HTTP的相 关请求,使用requests比用其他函数更加明智。 6.数据清洗 获得的数据和期望中的数据总有一定的差别,这一部分的任务便是排 除异常数据,把其余数据转换为易于处理的形式。数据的异常主要包 括数据格式异常和数据内容异常。需要的数据可能存放在一个PDF、
Word、JPG格式的文件中,把它们转换成文本而后选取相应的信息,这 是数据清洗工作的一部分。另外,由于网页发布者的疏忽,网页上有 部分数据和其他页面呈现不同,但需要把这部分数据也抓取下来,此 时需要进行一定的处理,把数据格式进行统一。 1.1.3 网络爬虫的抓取 1.概述 网络爬虫的不同抓取策略,便是利用不同的方法确定待抓取URL队列中 URL的优先顺序。网络爬虫的抓取策略有很多种,但不管方法如何,其 根本目标一致。网页的重要性评判标准不同,大部分采用网页的流行 性进行定义。网页结构分布图如图1-5所示。 图1-5 网页结构分布图 2.网络爬虫的抓取原理 一开始选取一部分精心挑选的种子URL,把这些URL放入待抓取URL队 列,从待抓取URL队列中拿出待抓取的URL,解析DNS并且得到主机的IP 地址,并把URL相应的网页下载下来,存放进已下载网页库中。此外, 把这些URL放进已抓取URL队列。分析已抓取URL队列中的URL,分析当 中的其他URL,并且把URL放入待抓取URL队列,继续进入下一个循环。 3.网络爬虫的抓取策略
1)宽度优先遍历(Breath First)策略 基本思路:将新下载网页包含的链接直接追加到待抓取URL队列末尾。 倘若网页是1号网页,从1号网页中抽取出3个链接指向2号、3号和4号 网页,于是按照编号顺序依次放入待抓取URL队列,图中网页的编号便 是在待抓取URL队列中的顺序编号,之后网络爬虫以此顺序进行下载。 抓取节点树结构如图1-6所示。 2)非完全PageRank(Partial PageRank)策略 基本思路:对于已下载的网页,加上待抓取URL队列中的URL一起,形 成网页集合,在此集合内进行PageRank计算,计算完成后,把待抓取 URL队列里的网页依照PageRank得分由高到低排序,形成的序列便是网 络爬虫接下来应该依次抓取的URL列表。 设定每下载3个网页进行新的PageRank计算,此时已经有{1,2,3}3个网 页下载到本地。这三个网页包含的链接指向{4,5,6},即待抓取URL队 列,如何决定下载顺序?将这6个网页形成新的集合,对这个集合计算 PageRank的值,这样4、5、6就获得对应的PageRank值,由大到小排 序,即可得出下载顺序。假设顺序为5、4、6,当下载5号页面后抽取 出链接,指向页面8,此时赋予8临时PageRank值,如果这个值大于4和 6的PageRank值,则接下来优先下载页面8,如此不断循环,即形成非 完全PageRank策略的计算思路。非完全PageRank策略结构图如图1-7所 示。
▲图1-6 抓取节点树结构
The above is a preview of the first 20 pages. Register to read the complete e-book.