失效链接处理 |
Python爬虫技术 深入理解原理、技术与开发 李宁 PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/28510027.html
相关截图: 资料简介: 本书从实战角度系统讲解 Python爬虫的核心知识点,并通过大量的真实项目让读者熟练掌握 Python爬虫技术。本书用 20多个实战案例,完美演绎了使用各种技术编写 Python爬虫的方式,读者可以任意组合这些技术,完成非常复杂的爬虫应用。 全书共 20章,分为 5篇。第 1篇基础知识(第 1、2章),主要包括 Python运行环境的搭建、 HTTP基础、网页基础( HTML、CSS、JavaScript等)、爬虫的基本原理、 Session与 Cookie。第 2篇网络库(第 3~ 6章),主要包括网络库 urllib、urllib3、requests和 Twisted的核心使用方法,如发送 HTTP请求、处理超时、设置 HTTP请求头、搭建和使用代理、解析链接、 Robots协议等。第 3篇解析库(第 7~ 10章),主要包括 3个常用解析库( lxml、Beautiful Soup和 pyquery)的使用方法,同时介绍多种用于分析 HTML代码的技术,如正则表达式、 XPath、CSS选择器、方法选择器等。第 4篇数据存储(第 11、12章),主要包括 Python中数据存储的解决方案,如文件存储和数据库存储,其中数据库存储包括多种数据库,如本地数据库 SQLite、网络数据库 MySQL以及文档数据库 MongoDB。第 5篇爬虫高级应用(第 13~ 20章),主要包括 Python爬虫的一些高级技术,如抓取异步数据、 Selenium、Splash、抓取移动 App数据、 Appium、多线程爬虫、爬虫框架 Scrapy,*后给出一个综合的实战案例,综合了 Python爬虫、数据存储、 PyQt5、多线程、数据可视化、Web等多种技术实现一个可视化爬虫。 本书可以作为广大计算机软件技术开发者、互联网技术研究人员学习“爬虫技术”的参考用书。也可以作为高等院校计算机科学与技术、软件工程、人工智能等专业的教学参考用书。 资料目录:
第 1篇基础知识 1.1 安装官方的 Python运行环境 .........................2 1.2 配置 PATH环境变量.....................................5 1.3 安装 Anaconda Python开发环境 ...................6 1.4 安装 PyCharm ...............................................7 1.5 配置 PyCharm ...............................................8 1.6 小结 ........................................................... 10 第 2章爬虫基础.......................................11 2.1 HTTP基础...................................................... 11 2.1.1 URI和 URL ........................................ 11 2.1.2 超文本 ................................................ 12 2.1.3 HTTP与 HTTPS ................................. 12 2.1.4 HTTP的请求过程 ............................... 15 2.1.5 请求 .................................................... 17 2.1.6 响应 .................................................... 20 2.2 网页基础 ........................................................ 23 2.2.1 HTML ................................................. 23 2.2.2 CSS .................................................... 24 2.2.3 CSS选择器......................................... 25 2.2.4 JavaScript ........................................... 27 2.3 爬虫的基本原理 .............................................. 27 2.3.1 爬虫的分类 ......................................... 27 2.3.2 爬虫抓取数据的方式和手段 ................. 28 2.4 Session与 Cookie ........................................... 28 2.4.1 静态页面和动态页面 ........................... 29 2.4.2 无状态 HTTP与 Cookie ...................... 30 2.4.3 利用 Session和 Cookie保持状态 ......... 30 2.4.4 查看网站的 Cookie .............................. 31 2.4.5 HTTP状态何时会失效 ........................ 32
CONTENTS 目 录 2.6 实战案例:抓取博客文章列表 ......................... 37 2.7 小结 ............................................................... 40
第 2篇网络库 3.1 urllib简介 ...................................................... 42 3.2 发送请求与获得响应 ....................................... 43
3.2.1 用 urlopen函数发送 HTTP GET请求 .................................................... 43 3.2.4 设置 HTTP请求头 .............................. 46 3.2.5 设置中文 HTTP请求头 ....................... 48 3.2.6 请求基础验证页面 ............................... 50 3.2.7 搭建代理与使用代理 ........................... 54 3.2.8 读取和设置 Cookie .............................. 56 3.3 异常处理 ........................................................ 60 3.3.1 URLError ............................................60 3.3.2 HTTPError ..........................................61 3.4 解析链接 ........................................................ 62
3.4.1 拆分与合并 URL(urlparse与 urlunparse) ....................... 62 3.4.4 URL编码(urlencode)......................... 65 3.4.5 编码与解码(quote与 unquote)........... 66 3.4.6 参数转换(parse_qs与 parse_qsl) ........ 66 3.5 Robots协议 .................................................... 67 3.5.1 Robots协议简介 ................................. 67 3.5.2 分析 Robots协议 ................................ 68 3.6 小结 ............................................................... 69 第 4章网络库 urllib3 ............................... 70 4.1 urllib3简介 .................................................... 70 4.2 urllib3模块 .................................................... 70 4.3 发送 HTTP GET请求 ...................................... 71 4.4 发送 HTTP POST请求 .................................... 72 4.5 HTTP请求头 .................................................. 74 4.6 HTTP响应头 .................................................. 76 4.7 上传文件 ........................................................ 76 4.8 超时 ............................................................... 78 4.9 小结 ............................................................... 79 第 5章网络库 requests ........................... 80 5.1 基本用法 ........................................................ 80 5.1.1 requests的 HelloWorld ........................ 81 5.1.2 GET请求 ............................................ 81 5.1.3 添加 HTTP请求头 .............................. 82 5.1.4 抓取二进制数据 .................................. 83 5.1.5 POST请求 .......................................... 84 5.1.6 响应数据 ............................................. 85 5.2 高级用法 ........................................................ 87 5.2.1 上传文件 ............................................. 88 5.2.2 处理 Cookie ........................................ 89 5.2.3 使用同一个会话(Session) .................. 90 5.2.4 SSL证书验证...................................... 91 5.2.5 使用代理 ............................................. 94 5.2.6 超时 .................................................... 95 5.2.7 身份验证 ............................................. 97 5.2.8 将请求打包 ......................................... 97 5.3 小结 ............................................................... 98 第 6章 Twisted网络框架.......................... 99 6.1 异步编程模型 ................................................. 99 6.2 Reactor(反应堆)模式 ................................. 101 6.3 HelloWorld,Twisted框架 ............................ 101 6.4 用 Twisted实现时间戳客户端........................ 103 6.5 用 Twisted实现时间戳服务端........................ 104 6.6 小结 ............................................................. 105
第 3篇解析库 7.1 使用正则表达式 ............................................ 108 7.1.1 使用 match方法匹配字符串 .............. 108
7.1.2 使用 search方法在一个字符串中查找模式 ........................................... 109 7.1.4 匹配任何单个字符 ............................. 111 7.1.5 使用字符集 ....................................... 112 7.1.6 重复、可选和特殊字符 ...................... 114 7.1.7 分组 .................................................. 117
7.1.8 匹配字符串的起始和结尾以及单词边界 ........................................... 118 7.1.11 使用 split分隔字符串 ...................... 122 7.2 一些常用的正则表达式 ................................. 123 7.3 项目实战:抓取小说目录和全文 ................... 124 7.4 项目实战:抓取猫眼电影 Top100榜单 .......... 128 7.5 项目实战:抓取糗事百科网的段子 ................ 133 7.6 小结 ............................................................. 136 第 8章 lxml与 XPath ............................. 137 8.1 lxml基础...................................................... 137 8.1.1 安装 lxml .......................................... 137 8.1.2 操作 XML ......................................... 138 8.1.3 操作 HTML ....................................... 140 8.2 XPath ........................................................... 141 8.2.1 XPath概述 ........................................ 141 8.2.2 使用 XPath ........................................ 141 8.2.3 选取所有节点 .................................... 143 8.2.4 选取子节点 ....................................... 145 8.2.5 选取父节点 ....................................... 146 8.2.6 属性匹配与获取 ................................ 146 8.2.7 多属性匹配 ....................................... 147 8.2.8 按序选择节点 .................................... 148 8.2.9 节点轴选择 ....................................... 149
8.2.10 在 Chrome中自动获得 XPath代码 .... 151 8.3 项目实战:抓取豆瓣 Top250图书榜单 .......... 154 8.4 项目实战:抓取起点中文网的小说信息 ......... 158 8.5 小结 ............................................................. 161 第 9章 Beautiful Soup库....................... 162 9.1 Beautiful Soup简介 ...................................... 162 9.2 Beautiful Soup基础 ...................................... 162 9.2.1 安装 Beautiful Soup .......................... 163 9.2.2 选择解析器 ....................................... 164 9.2.3 编写个 Beautiful Soup程序 ........ 164 9.3 节点选择器 ................................................... 165 9.3.1 选择节点 ........................................... 165 9.3.2 嵌套选择节点 .................................... 167 9.3.3 选择子节点 ....................................... 168 9.3.4 选择父节点 ....................................... 171 9.3.5 选择兄弟节点 .................................... 172 9.4 方法选择器 ................................................... 174 9.4.1 find_all方法 ..................................... 174 9.4.2 find方法 ........................................... 177 9.5 CSS选择器 ................................................... 178 9.5.1 基本用法 ........................................... 179 9.5.2 嵌套选择节点 .................................... 180 9.5.3 获取属性值与文本 ............................. 181 9.5.4 通过浏览器获取 CSS选择器代码....... 182 9.6 实战案例:抓取租房信息 .............................. 184 9.7 实战案例:抓取酷狗网络红歌榜 ................... 188 9.8 小结 ............................................................. 191 第 10章 pyquery库 ............................... 192 10.1 pyquery简介 ............................................... 192 10.2 pyquery基础 ............................................... 192 10.2.1 安装 pyquery ................................... 193 10.2.2 pyquery的基本用法 ........................ 193 10.3 CSS选择器 ................................................. 194 10.4 查找节点..................................................... 196 10.4.1 查找子节点 ..................................... 196 10.4.2 查找父节点 ..................................... 197 10.4.3 查找兄弟节点 .................................. 198 10.4.4 获取节点信息 .................................. 199 10.5 修改节点..................................................... 203
10.5.1 添加和移除节点的样式(addClass和 removeClass)............... 204 10.6 伪类选择器 ................................................. 208 10.7 项目实战:抓取当当图书排行榜.................. 210
10.8 项目实战:抓取商城手机销售排行榜.... 213
第 4篇数据存储 11.1 打开文件 ..................................................... 222 11.2 操作文件的基本方法 ................................... 224 11.2.1 读文件和写文件 .............................. 224 11.2.2 读行和写行 ..................................... 226 11.3 使用 FileInput对象读取文件 ....................... 227 11.4 处理 XML格式的数据 ................................. 228 11.4.1 读取与搜索 XML文件 ..................... 228 11.4.2 字典转换为 XML字符串 ................. 229 11.4.3 XML字符串转换为字典 .................. 231 11.5 处理 JSON格式的数据................................ 232 11.5.1 JSON字符串与字典互相转换 .......... 233 11.5.2 将 JSON字符串转换为类实例 .......... 234 11.5.3 将类实例转换为 JSON字符串 .......... 236
11.5.4 类实例列表与 JSON字符串互相转换 ................................................ 236 11.7 CSV文件存储 ............................................. 238 11.7.1 写入 CSV文件 ................................ 238 11.7.2 读取 CSV文件 ................................ 241 11.8 小结 ............................................................ 241 第 12章数据库存储............................... 242 12.1 SQLite数据库 ............................................. 242 12.1.1 管理 SQLite数据库 ......................... 243 12.1.2 用 Python操作 SQLite数据库 ......... 245 12.2 MySQL数据库 ........................................... 247 12.2.1 安装 MySQL ................................... 247 12.2.2 在 Python中使用 MySQL ................ 250 12.3 非关系型数据库 .......................................... 253 12.3.1 NoSQL简介.................................... 253 12.3.2 MongoDB数据库 ........................... 253 12.3.3 pymongo模块 ................................. 255 12.4 项目实战:抓取豆瓣音乐排行榜.................. 256 12.5 项目实战:抓取豆瓣电影排行榜.................. 260 12.6 小结............................................................ 264
第 5篇爬虫高级应用 13.1 异步加载与 AJAX ....................................... 266 13.2 基本原理..................................................... 267 13.3 逆向工程..................................................... 270 13.4 提取结果..................................................... 274 13.5 项目实战:支持搜索功能的图片爬虫 ........... 274 13.6 项目实战:抓取图书评价 ..................... 279 13.7 小结............................................................ 284 第 14章可见即可爬:Selenium .............. 285 14.1 安装 Selenium ............................................. 286 14.2 安装 WebDriver .......................................... 286 14.2.1 安装 ChromeDriver.......................... 287 14.2.2 装 Edge WebDriver .......................... 288 14.2.3 安装其他浏览器的 WebDriver .......... 289 14.3 Selenium的基本使用方法 ........................... 289 14.4 查找节点..................................................... 293 14.4.1 查找单个节点 .................................. 293 14.4.2 查找多个节点 .................................. 295 14.5 节点交互..................................................... 297 14.6 动作链 ........................................................ 298 14.7 执行 JavaScript代码 ................................... 301 14.8 获取节点信息 .............................................. 302 14.9 管理 Cookies ............................................... 303 14.10 改变节点的属性值 ..................................... 304 14.11 项目实战:抓取 QQ空间说说的内容 ......... 306 14.12 小结 .......................................................... 308 第 15章基于 Splash的爬虫 ................... 309 15.1 Splash基础 ................................................. 309 15.1.1 Splash功能简介 .............................. 309 15.1.2 安装 Docker .................................... 310 15.1.3 安装 Splash ..................................... 310 15.2 Splash Lua脚本 .......................................... 312 15.2.1 个 Lua脚本 .............................. 312 15.2.2 异步处理 ......................................... 313 15.2.3 Splash对象属性 .............................. 314 15.2.4 go方法 ........................................... 318 15.2.5 wait方法 ......................................... 319 15.2.6 jsfunc方法 ...................................... 320 15.2.7 evaljs方法 ...................................... 320 15.2.8 runjs方法 ....................................... 320 15.2.9 autoload方法 .................................. 321 15.2.10 call_later方法 ............................... 322 15.2.11 http_get方法 ................................. 323 15.2.12 http_post方法 ............................... 324 15.2.13 set_content方法 ............................ 325 15.2.14 html方法 ...................................... 325 15.2.15 png方法 ........................................ 326 15.2.16 jpeg方法 ....................................... 326 15.2.17 har方法 ........................................ 326 15.2.18 其他方法 ....................................... 327 15.3 使用 CSS选择器 ......................................... 331 15.3.1 select方法 ...................................... 331 15.3.2 select_all方法 ................................. 332 15.4 模拟鼠标和键盘的动作................................ 333 15.5 Splash HTTP API ........................................ 334
15.6 项目实战:使用 Splash Lua抓取搜索结果 ..................................................... 338 第 16章抓取移动 App的数据 ................. 341 16.1 使用 Charles ............................................... 341 16.1.1 抓取 HTTP数据包 ........................... 342 16.1.2 安装 PC端证书 ............................... 344 16.1.3 在手机端安装证书 ........................... 345 16.1.4 监听 HTTPS数据包 ......................... 346 16.2 使用 mitmproxy .......................................... 348 16.2.1 安装 mitmproxy............................... 348 16.2.2 在 PC端安装 mitmproxy证书 .......... 349 16.2.3 在移动端安装 mitmproxy证书......... 352 16.2.4 mitmproxy有哪些功能 .................... 353 16.2.5 设置手机的代理 .............................. 353
16.2.6 用 mitmproxy监听 App的请求与响应数据 ......................................... 354 16.2.8 mitmdump与 Python对接 ............... 357 16.2.9 使用 mitmweb监听请求与响应........ 361
16.3 项目实战:实时抓取“得到” App在线课程 .............................................. 363
第 17章使用 Appium在移动端抓取数据 ... 368 17.1.1 安装 Appium桌面端 ........................ 368 17.1.2 配置 Android开发环境 .................... 370 17.1.3 配置 iOS开发环境 .......................... 371 17.2 Appium的基本使用方法 ............................. 372 17.2.1 启动 Appium服务 ........................... 372
17.2.2 查找 Android App的 Package和入口 Activity................................... 374 17.3 使用 Python控制手机 App .......................... 379 17.4 AppiumPythonClient API............................. 380 17.4.1 初始化(Remote类)........................ 380 17.4.2 查找元素 ......................................... 381 17.4.3 单击元素 ......................................... 381 17.4.4 屏幕拖动 ......................................... 382 17.4.5 屏幕滑动 ......................................... 382 17.4.6 拖曳操作 ......................................... 383 17.4.7 文本输入 ......................................... 383 17.4.8 动作链 ............................................ 383
17.5 项目实战:利用 Appium抓取微信朋友圈信息 ............................................................ 384 第 18章多线程和多进程爬虫 .................. 389 18.1 线程与进程 ................................................. 389 18.1.1 进程 ................................................ 389 18.1.2 线程 ................................................ 390 18.2 Python与线程 ............................................. 390 18.2.1 使用单线程执行程序 ....................... 390 18.2.2 使用多线程执行程序 ....................... 391 18.2.3 为线程函数传递参数 ....................... 393 18.2.4 线程和锁 ......................................... 394 18.3 高级线程模块(threading) ........................... 395 18.3.1 Thread类与线程函数 ....................... 395 18.3.2 Thread类与线程对象 ....................... 396 18.3.3 从 Thread类继承 ............................. 398 18.4 线程同步..................................................... 399 18.4.1 线程锁 ............................................ 400 18.4.2 信号量 ............................................ 402 18.5 生产者—消费者问题与 queue模块 .............. 405 18.6 多进程 ........................................................ 407
18.7 项目实战:抓取豆瓣音乐 Top250排行榜(多线程版) .................................................. 408 第 19章网络爬虫框架:Scrapy.............. 413 19.1 Scrapy基础知识 ......................................... 413 19.1.1 Scrapy简介 ..................................... 413 19.1.2 Scrapy安装 ..................................... 414 19.1.3 Scrapy Shell抓取 Web资源 ............. 415 19.2 用 Scrapy编写网络爬虫 .............................. 417 19.2.1 创建和使用 Scrapy工程 .................. 417 19.2.2 在 PyCharm中使用 Scrapy .............. 419
19.2.3 在 PyCharm中使用扩展工具运行 Scrapy程序 ..................................... 421 19.3 Scrapy的高级应用 ...................................... 431 19.3.1 处理登录页面 .................................... 431 19.3.2 处理带隐藏文本框的登录页面 ......... 434 19.3.3 通过 API抓取天气预报数据 ............ 436 19.3.4 从 CSV格式转换到 JSON格式 ........ 443 19.3.5 下载器中间件 .................................. 447 19.3.6 爬虫中间件 ..................................... 452 19.3.7 Item管道 ........................................ 455 19.3.8 通用爬虫 ......................................... 465 19.4 小结............................................................ 474 第 20章综合爬虫项目:可视化爬虫 ........ 475 20.1 项目简介..................................................... 475 20.2 主界面设计和实现 ....................................... 477 20.3 获取商品页数和每页商品数 ......................... 478 20.4 并发抓取商品列表 ....................................... 479 20.5 数据库操作类 .............................................. 481 20.6 情感分析..................................................... 484 20.7 抓取和分析商品评论数据 ............................ 485 20.8 可视化评论数据 .......................................... 486
20.9 小结............................................................ 488 |