主编推荐语
本书深入浅出剖析Python爬虫,从零开始学习,涵盖基础知识、爬虫库、存储数据、反爬策略等内容。
内容简介
借着人工智能的浪潮,Python的热度一直持续上涨,训练人工智能依赖于大量的数据,而数据的获取基本靠爬虫。大量的信息通过Web站点进行展示,通过学习编写Python爬虫,编写采集数据的爬虫脚本,对所需的数据进行爬取。本书尝试着由浅入深来剖析Python爬虫,让读者更快更系统的上手Python爬虫的编写。本书包括12章内容,从零开始学习Python爬虫。第1章是Python爬虫概念与Web基础,介绍了Python的一些概念,HTTP协议,简单介绍了网页基本三剑客HTML,CSS和JavaScript的基本语法。第2章介绍Python爬虫库的基本使用,包括Chrome抓包,urllib和lxml库的使用。第3章介绍Python抓包与数据分析,包括HTTPS简介,Charles抓包,Packet Capture抓包,requests库和Beautiful Soup库的使用。第4章介绍使用CSV和Excel存储数据。第5章介绍使用数据库存储数据,包括MySQL,Redis和MongoDB的使用。第6章介绍一些常见的反爬虫策略,代理,ajax,selenium等。第7,8章详细讲解了Python爬虫框架Scrapy的使用。第9章介绍了构建自己的代理ip池。第10章介绍了如何搭建分布式爬虫。第11,12章,利用爬取到的数据进行可视化数据分析。
目录
- 封面
- 作者简介
- 扉页
- 版权信息
- 前言
- 目录
- 第1章 Python爬虫概念与Web基础
- 1.1 爬虫概念
- 1.1.1 什么是爬虫
- 1.1.2 爬虫使用场景的引入
- 1.1.3 爬虫的组成部分
- 1.1.4 模拟请求
- 1.1.5 数据解析
- 1.1.6 数据保存
- 1.1.7 爬虫的学习路线
- 1.2 HTTP简述
- 1.2.1 简述一次网络请求过程
- 1.2.2 URI和URL
- 1.2.3 HTTP请求报文
- 1.2.4 HTTP响应报文
- 1.3 网页的组成
- 1.3.1 HTML简介
- 1.3.2 CSS选择器简介
- 1.3.3 JavaScript简介
- 第2章 Python爬虫基本库的使用
- 2.1 Chrome抓包详解
- 2.1.1 Controls
- 2.1.2 Filter
- 2.1.3 Request Table
- 2.2 urllib库详解
- 2.2.1 发送请求
- 2.2.2 抓取二进制文件
- 2.2.3 模拟GET和POST请求
- 2.2.4 修改请求头
- 2.2.5 设置连接超时
- 2.2.6 延迟提交数据
- 2.2.7 设置代理
- 2.2.8 Cookie
- 2.2.9 urllib.parse模块
- 2.2.10 urllib.error异常处理模块
- 2.2.11 urllib.robotparser模块
- 2.3 用lxml库解析网页节点
- 2.3.1 安装库
- 2.3.2 XPath语法速成
- 2.4 实战:爬取小说《三国演义》
- 第3章 Python爬虫抓包与数据解析
- 3.1 抓包进阶
- 3.1.1 HTTPS介绍
- 3.1.2 HTTPS的工作流程
- 3.1.3 Charles抓包
- 3.1.4 Packet Capture抓包
- 3.2 Requests HTTP请求库
- 3.2.1 Requests库简介
- 3.2.2 Requests HTTP基本请求
- 3.2.3 Requests 请求常用设置
- 3.2.4 Requests 处理返回结果
- 3.2.5 Requests 处理Cookie
- 3.2.6 Requests重定向与请求历史
- 3.2.7 Requests 错误与异常处理
- 3.2.8 Requests Session会话对象
- 3.2.9 Requests SSL证书验证
- 3.3 实战:爬取微信文章中的图片、音频和视频
- 3.3.1 爬取标题
- 3.3.2 爬取图片
- 3.3.3 爬取音频
- 3.3.4 爬取视频
- 3.3.5 代码整理
- 3.4 Beautiful Soup解析库
- 3.4.1 Beautiful Soup简介
- 3.4.2 Beautiful Soup对象实例化
- 3.4.3 Beautiful Soup的四大对象
- 3.4.4 Beautiful Soup的各种节点
- 3.4.5 Beautiful Soup文档树搜索
- 3.4.6 Beautiful Soup 使用CSS选择器
- 3.5 实战:爬取壁纸站点的壁纸
- 3.6 正则表达式
- 3.6.1 re模块
- 3.6.2 正则规则详解
- 3.6.3 正则练习
- 3.7 实战:爬取市级编码列表
- 3.7.1 获取所有市级的跳转链接列表
- 3.7.2 解析表格获得所有市级天气链接
- 3.7.3 提取市级编码
- 3.7.4 整合调整代码
- 第4章 用CSV和Excel存储数据
- 4.1 用CSV文件存储数据
- 4.1.1 CSV写入
- 4.1.2 CSV读取
- 4.2 实战:爬取星座运势
- 4.3 用Excel文件存储数据
- 4.3.1 Excel写入
- 4.3.2 Excel读取
- 4.4 实战:爬取某音乐平台排行榜
- 第5章 用数据库存储数据
- 5.1 MySQL数据库
- 5.1.1 安装MySQL
- 5.1.2 在Windows环境下安装MySQL
- 5.1.3 在Windows环境下配置MYSQL_HOME环境变量
- 5.1.4 在Windows环境下设置MySQL登录密码
- 5.1.5 在Windows环境下启动或关闭MySQL服务
- 5.1.6 Mac环境
- 5.1.7 Ubuntu环境
- 5.1.8 MySQL的基本操作
- 5.1.9 MySQL数据库语法速成
- 5.1.10 Python连接MySQL数据库
- 5.1.11 MySQL特殊符号和表情问题
- 5.1.12 实战:抓取某技术网站数据
- 5.2 数据库可视化工具DataGrip
- 5.2.1 建立数据库关联
- 5.2.2 编写SQL语句
- 5.2.3 常见问题:连接远程主机
- 5.3 Redis数据库
- 5.3.1 安装Redis
- 5.3.2 redis-py库的安装
- 5.3.3 redis-py基本操作示例
- 5.3.4 实战:爬取视频弹幕并保存到Redis
- 5.4 MongoDB数据库
- 5.4.1 安装MongoDB
- 5.4.2 安装PyMongo库
- 5.4.3 PyMongo基本操作示例
- 5.4.4 实战:爬取某电商网站关键字搜索结果并保存到MongoDB
- 第6章 Python应对反爬虫策略
- 6.1 反爬虫概述
- 6.1.1 为什么会出现反爬虫
- 6.1.2 常见的爬虫与反爬虫大战
- 6.2 反爬虫策略
- 6.2.1 User-Agent限制
- 6.2.2 302重定向
- 6.2.3 IP限制
- 6.2.4 什么是网络代理
- 6.2.5 如何获取代理IP
- 6.2.6 ADSL拨号代理
- 6.2.7 Squid 配置代理缓存服务器
- 6.2.8 TinyProxy配置代理缓存服务器
- 6.2.9 Cookie限制
- 6.3 JavaScript反爬虫策略
- 6.3.1 Ajax动态加载数据
- 6.3.2 实战:爬取某素材网内容分析
- 6.3.3 数据请求分析
- 6.3.4 编写代码
- 6.4 Selenium模拟浏览器操作
- 6.4.1 Selenium简介
- 6.4.2 安装Selenium
- 6.4.3 Selenium常用函数
- 6.5 实战:爬取某网站的特定图
- 6.6 PhantomJS
- 6.6.1 在Windows上安装PhantomJS
- 6.6.2 在Mac上安装PhantomJS
- 6.6.3 在Ubuntu上安装PhantomJS
- 6.6.4 关于PhantomJS的重要说明
- 6.7 常见验证码策略
- 6.7.1 图片验证码
- 6.7.2 实战:实现图片验证码自动登录
- 6.7.3 实战:实现滑动验证码自动登录
- 第7章 Python爬虫框架Scrapy(上)
- 7.1 Scrapy框架简介与安装
- 7.1.1 Scrapy相关信息
- 7.1.2 Scrapy的安装
- 7.2 实战:爬取某网站每日壁纸
- 7.2.1 抓取目标分析
- 7.2.2 创建爬虫脚本
- 7.2.3 编写爬虫脚本
- 7.2.4 运行爬虫脚本
- 7.2.5 解析数据
- 7.3 Scrapy架构简介
- 7.3.1 Scrapy架构图
- 7.3.2 各个模块间的协作流程
- 7.3.3 协作流程拟人化对话版
- 7.4 Spider详解
- 7.4.1 Spider的主要属性和函数
- 7.4.2 Spider运行流程
- 7.5 Request类和Response类
- 7.5.1 Request详解
- 7.5.2 Response类常用参数、方法与子类
- 7.5.3 选择器
- 7.5.4 Scrapy Shell
- 7.6 Item详解
- 7.7 Item Pipeline详解
- 7.7.1 自定义Item Pipeline类
- 7.7.2 启用Item Pipeline
- 7.8 实战:完善爬取每日壁纸的脚本
- 7.8.1 定义BingItem
- 7.8.2 使用ImagesPipeline
- 7.8.3 修改Spider代码
- 7.8.4 运行爬虫脚本
- 7.9 设置请求头
- 7.9.1 构造Request时传入
- 7.9.2 修改settings.py文件
- 7.9.3 为爬虫添加custom_settings字段
- 7.10 下载中间件详解
- 7.10.1 自定义Downloader Middleware类
- 7.10.2 启用自定义的代理下载中间件
- 7.11 实战:爬取某站点绘画频道的图片
- 7.11.1 分析爬取的站点
- 7.11.2 新建项目与明确爬取目标
- 7.11.3 创建爬虫爬取网页
- 7.11.4 设置代理
- 7.11.5 解析数据
- 7.11.6 存储数据
- 7.11.7 完善代码
- 第8章 Python爬虫框架Scrapy(下)
- 8.1 Scrapy对接Selenium
- 8.1.1 如何对接
- 8.1.2 对接示例:爬取某网站首页文章
- 8.2 实战:用Scrapy实现一个简单的代理池
- 8.2.1 代理池的设计
- 8.2.2 创建项目
- 8.2.3 编写获取IP的爬虫
- 8.2.4 编写检测IP的爬虫
- 8.2.5 编写调度程序
- 8.2.6 编写获取代理IP的接口
- 8.2.7 使用代理
- 8.3 用Scrapyrt调度Scrapy
- 8.3.1 相关文档与安装Scrapyrt
- 8.3.2 Scrapyrt GET请求相关参数
- 8.3.3 Scrapyrt POST请求相关参数
- 8.4 用Docker部署Scrapy
- 8.4.1 Docker简介
- 8.4.2 下载并安装Docker
- 8.4.3 创建Dockerfile
- 8.4.4 构建Docker镜像
- 8.4.5 把生成的Docker镜像推送到Docker Hub
- 8.4.6 在云服务器上运行Docker镜像
- 第9章 数据分析案例:Python岗位行情
- 9.1 数据爬取
- 9.2 NumPy库和pandas库
- 9.2.1 ndarray数组
- 9.2.2 ndarray数组的常用操作
- 9.2.3 pandas库
- 9.3 用Matplotlib实现数据可视化
- 9.3.1 Matplotlib中文乱码问题
- 9.3.2 Matplotlib绘制显示不全
- 9.3.3 用Matplotlib生成图表并进行分析
- 9.4 用Wordcloud库进行词云绘制
- 9.4.1 Wordcloud简介
- 9.4.2 Wordcloud构造函数与常用方法
- 9.4.3 词云绘制
- 9.5 小结
- 第10章 数据分析案例:某婚恋网站交友情况分析
- 10.1 数据爬取
- 10.2 安装Jupyter Notebook
- 10.3 安装pyecharts
- 10.4 数据分析
- 10.4.1 读取CSV文件里的数据
- 10.4.2 分析身高
- 10.4.3 分析学历
- 10.4.4 分析年龄
- 10.4.5 分析城市
- 10.4.6 分析交友宣言
- 10.5 小结
- 反侵权盗版声明
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。