精通Python网络爬虫:核心技术、框架与项目实战导读

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

前  言
为什么写这本书
网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中。在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储。
随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来。对特定的数据进行爬取的爬虫,我们将其称为聚焦网络爬虫。在大数据时代,聚焦网络爬虫的应用需求越来越大。
目前在国内Python网络爬虫的书籍基本上都是从国外引进翻译的,国内的本版书籍屈指可数,故而我跟华章的副总编杨福川策划了这本书。本书的撰写过程中各方面的参考资料非常少,因此完成本书所花费的精力相对来说是非常大的。
本书从系统化的视角,为那些想学习Python网络爬虫或者正在研究Python网络爬虫的朋友们提供了一个全面的参考,让读者可以系统地学习Python网络爬虫的方方面面,在理解并掌握了本书的实例之后,能够独立编写出自己的Python网络爬虫项目,并且能够胜任Python网络爬虫工程师相关岗位的工作。
同时,本书的另一个目的是,希望可以给大数据或者数据挖掘方向的从业者一定的参考,以帮助这些读者从海量的互联网信息中爬取需要的数据。所谓巧妇难为无米之炊,有了这些数据之后,从事大数据或者数据挖掘方向工作的读者就可以进行后续的分析处理了。
本书的主要内容和特色
本书是一本系统介绍Python网络爬虫的书籍,全书注重实战,涵盖网络爬虫原理、如何手写Python网络爬虫、如何使用Scrapy框架编写网络爬虫项目等关于Python网络爬虫的方方面面。
本书的主要特色如下:
系统讲解Python网络爬虫的编写方法,体系清晰。
结合实战,让读者能够从零开始掌握网络爬虫的基本原理,学会编写Python网络爬虫以及Scrapy爬虫项目,从而编写出通用爬虫及聚焦爬虫,并掌握常见网站的爬虫反屏蔽手段。
有配套免费视频,对于书中的难点,读者可以直接观看作者录制的对应视频,加深理解。
拥有多个爬虫项目编写案例,比如博客类爬虫项目案例、图片类爬虫项目案例、模拟登录爬虫项目等。除此之外,还有很多不同种类的爬虫案例,可以让大家在理解这些案例之后学会各种类型爬虫的编写方法。
总之,在理解本书内容并掌握书中实例之后,读者将能胜任Python网络爬虫工程师方向的工作并学会各种类型网络爬虫项目的编写。此外,本书对于大数据或数据挖掘方向的从业者也非常有帮助,比如可以利用Python网络爬虫轻松获取所需的数据信息等。
本书面向的读者
Python网络爬虫初学者
网络爬虫工程师
大数据及数据挖掘工程师
高校计算机专业的学生
其他对Python或网络爬虫感兴趣的人员
如何阅读本书
本书分为四篇,共计20章。
第一篇为理论基础篇(第1~2章),主要介绍了网络爬虫的基础知识,让大家从零开始对网络爬虫有一个比较清晰的认识。
第二篇为核心技术篇(第3~9章),详细介绍了网络爬虫实现的核心技术,包括网络爬虫的工作原理、如何用Urllib库编写网络爬虫、爬虫的异常处理、正则表达式、爬虫中Cookie的使用、手写糗事百科爬虫、手写链接爬虫、手写微信爬虫、手写多线程爬虫、浏览器伪装技术、Python网络爬虫的定向爬取技术及实例等。学完这一部分内容,读者就可以写出自己的爬虫了。这部分的爬虫编写采用的是一步步纯手写的方式进行的,没有采用框架。
第三篇为框架实现篇(第10~17章),主要详细介绍了如何用框架实现Python网络爬虫项目。使用框架实现Python网络爬虫项目相较于手写方式更加便捷,主要包括Python爬虫框架分类、Scrapy框架在各系统中的安装以及如何避免各种“坑”、如何用Scrapy框架编写爬虫项目、Scrapy框架架构详解、Scrapy的中文输出与存储、在Scrapy中如何使用for循环实现自动网页爬虫、如何通过CrawlSpider实现自动网页爬虫、如何将爬取的内容写进数据库等。其中第12章为基础部分,读者需要着重掌握。
第四篇为项目实战篇(第18~20章),分别讲述了博客类爬虫项目、图片类爬虫项目、模拟登录爬虫项目的编程及实现。其中,也会涉及验证码处理等方面的难点知识,帮助读者通过实际的项目掌握网络爬虫项目的编写。
勘误和支持
由于作者的水平有限,书中难免有一些错误或不准确的地方,恳请各位读者不吝指正。
相关建议各位可以通过微博@韦玮pig或通过QQ公众号a67899或微信公众平台weijc7789(可以直接扫描下方二维码添加)进行反馈,也可以直接向邮箱ceo@iqianyue.com发送邮件,期待能够收到各位读者的意见和建议,欢迎来信。

致谢
感谢机械工业出版社华章公司的副总编杨福川老师与编辑李艺老师,在近一年的时间里,是你们一次次在我遇到困难的时候,给予我鼓励,让我可以坚持写下去。创作一本图书是非常艰苦的,除了技术知识等因素之外,还需要非常大的毅力。特别感谢杨福川在写作过程中对我各方面的支持,尤其是对我毅力的培养。
感谢CSDN、51CTO与极客学院,因为你们,让我在这个领域获得了更多的学员与支持。
感谢恩师何云景教授对我创业方面的帮助,因为有您,我才拥有了一个更好的创业开端及工作环境。
特别致谢
最后,需要特别感谢的是我的女友,因为编写这本书,少了很多陪你的时间,感谢你的不离不弃与理解包容。希望未来可以加倍弥补你那些错过吃的美食和那些错过逛的街道。
同时,也要感谢你帮我完成书稿的校对工作,谢谢你的付出与支持。因为有了你默默的付出,我才能坚定地走下去;因为有了你不断的支持,我才可以安心地往前冲。
感谢爷爷从小对我人生观、价值观的培养,您是一个非常有思想的人。
感谢远方的父母、叔叔、姐姐,那些亲情的陪伴是我最珍贵的财富。
谨以此书献给热爱Python的朋友们!




Contents?目  录
前 言
第一篇 理论基础篇
第1章 什么是网络爬虫  
第2章 网络爬虫技能总览  
第二篇 核心技术篇
第3章 网络爬虫实现原理与实现技术  
第4章 Urllib库与URLError异常处理  29
4.1 什么是Urllib库  29
4.2 快速使用Urllib爬取网页  30
4.3 浏览器的模拟——Headers属性  34
4.4 超时设置  37
4.5 HTTP协议请求实战  39
4.6 代理服务器的设置  44
4.7 DebugLog实战  45
4.8 异常处理神器——URLError实战  46
4.9 小结  51
第5章 正则表达式与Cookie的使用  52
5.1 什么是正则表达式  52
5.2 正则表达式基础知识  52
5.3 正则表达式常见函数  61
5.4 常见实例解析  64
5.5 什么是Cookie  66
5.6 Cookiejar实战精析  66
5.7 小结  71
第6章 手写Python爬虫  73
6.1 图片爬虫实战  73
6.2 链接爬虫实战  78
6.3 糗事百科爬虫实战  80
6.4 微信爬虫实战  82
6.5 什么是多线程爬虫  89
6.6 多线程爬虫实战  90
6.7 小结  98
第7章 学会使用Fiddler  99
7.1 什么是Fiddler  99
7.2 爬虫与Fiddler的关系  100
7.3 Fiddler的基本原理与基本界面  100
7.4 Fiddler捕获会话功能  102
7.5 使用QuickExec命令行  104
7.6 Fiddler断点功能  106
7.7 Fiddler会话查找功能  111
7.8 Fiddler的其他功能  111
7.9 小结  113
第8章 爬虫的浏览器伪装技术  114
8.1 什么是浏览器伪装技术  114
8.2 浏览器伪装技术准备工作  115
8.3 爬虫的浏览器伪装技术实战  117
8.4 小结  121
第9章 爬虫的定向爬取技术  122
9.1 什么是爬虫的定向爬取技术  122
9.2 定向爬取的相关步骤与策略  123
9.3 定向爬取实战  124
9.4 小结  130
第三篇 框架实现篇
第10章 了解Python爬虫框架  133
10.1 什么是Python爬虫框架  133
10.2 常见的Python爬虫框架  133
10.3 认识Scrapy框架  134
10.4 认识Crawley框架  135
10.5 认识Portia框架  136
10.6 认识newspaper框架  138
10.7 认识Python-goose框架  139
10.8 小结  140
第11章 爬虫利器——Scrapy安装与配置  141
11.1 在Windows7下安装及配置Scrapy实战详解  141
11.2 在Linux(Centos)下安装及配置Scrapy实战详解  147
11.3 在MAC下安装及配置Scrapy实战详解  158
11.4 小结  161
第12章 开启Scrapy爬虫项目之旅  162
12.1 认识Scrapy项目的目录结构  162
12.2 用Scrapy进行爬虫项目管理  163
12.3 常用工具命令  166
12.4 实战:Items的编写  181
12.5 实战:Spider的编写  183
12.6 XPath基础  187
12.7 Spider类参数传递  188
12.8 用XMLFeedSpider来分析XML源  191
12.9 学会使用CSVFeedSpider  197
12.10 Scrapy爬虫多开技能  200
12.11 避免被禁止  206
12.12 小结  212
第13章 Scrapy核心架构  214
13.1 初识Scrapy架构  214
13.2 常用的Scrapy组件详解  215
13.3 Scrapy工作流  217
13.4 小结  219
第14章 Scrapy中文输出与存储  220
14.1 Scrapy的中文输出  220
14.2 Scrapy的中文存储  223
14.3 输出中文到JSON文件  225
14.4 小结  230
第15章 编写自动爬取网页的爬虫  231
15.1 实战:items的编写  231
15.2 实战:pipelines的编写  233
15.3 实战:settings的编写  234
15.4 自动爬虫编写实战  234
15.5 调试与运行  239
15.6 小结  242
第16章 CrawlSpider  243
16.1 初识CrawlSpider  243
16.2 链接提取器  244
16.3 实战:CrawlSpider实例  245
16.4 小结  249
第17章 Scrapy高级应用  250
17.1 如何在Python3中操作数据库  250
17.2 爬取内容写进MySQL  254
17.3 小结  259
第四篇 项目实战篇
第18章 博客类爬虫项目  263
18.1 博客类爬虫项目功能分析  263
18.2 博客类爬虫项目实现思路  264
18.3 博客类爬虫项目编写实战  264
18.4 调试与运行  274
18.5 小结  275
第19章 图片类爬虫项目  276
19.1 图片类爬虫项目功能分析  276
19.2 图片类爬虫项目实现思路  277
19.3 图片类爬虫项目编写实战  277
19.4 调试与运行  281
19.5 小结  282
第20章 模拟登录爬虫项目  283
20.1 模拟登录爬虫项目功能分析  283
20.2 模拟登录爬虫项目实现思路  283
20.3 模拟登录爬虫项目编写实战  284
20.4 调试与运行  292
20.5 小结  294
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
15天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
74 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
4天前
|
边缘计算 容灾 网络性能优化
算力流动的基石:边缘网络产品技术升级与实践探索
本文介绍了边缘网络产品技术的升级与实践探索,由阿里云专家分享。内容涵盖三大方面:1) 云编一体的混合组网方案,通过边缘节点实现广泛覆盖和高效连接;2) 基于边缘基础设施特点构建一网多态的边缘网络平台,提供多种业务形态的统一技术支持;3) 以软硬一体的边缘网关技术实现多类型业务网络平面统一,确保不同网络间的互联互通。边缘网络已实现全球覆盖、差异化连接及云边互联,支持即开即用和云网一体,满足各行业需求。
|
18天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
22天前
|
负载均衡 网络协议 网络性能优化
动态IP代理技术详解及网络性能优化
动态IP代理技术通过灵活更换IP地址,广泛应用于数据采集、网络安全测试等领域。本文详细解析其工作原理,涵盖HTTP、SOCKS代理及代理池的实现方法,并提供代码示例。同时探讨配置动态代理IP后如何通过智能调度、负载均衡、优化协议选择等方式提升网络性能,确保高效稳定的网络访问。
146 2
|
7天前
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
42 15
|
28天前
|
机器学习/深度学习 安全 网络安全
网络安全词云图与技术浅谈
### 网络安全词云图与技术浅谈 本文介绍了通过词云图展示网络安全关键术语的方法,并探讨了构建现代网络安全体系的关键要素。词云图利用字体大小和颜色突出高频词汇,如恶意软件、防火墙、入侵检测系统等。文中提供了生成词云图的Python代码示例,包括安装依赖库和调整参数。此外,文章详细讨论了恶意软件防护、加密技术、身份验证、DDoS防御、社会工程学防范及威胁情报等核心技术,强调了多层次、多维度的安全策略的重要性。
68 11
网络安全词云图与技术浅谈
|
4天前
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
|
7天前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
43 7
|
22天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
25天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率