用 Python 写网络爬虫 第2版

内容简介

畅销的 Python 网络爬虫开发实战图书全新升级版,上一版年销量近 40000 册。

针对 Python 3.6 版本编写。

Internet 上包含了许多有用的数据,其中大部分是可以免费公开访问的。但是,这些数据不容易使用,它们内嵌在网站的架构和样式中,在提取时也需要多加小心。网络爬取技术作为一种收集和理解网络上海量信息的方式,正变得越来越有用。

本书是使用 Python 3.6 的新特性来爬取网络数据的入门指南。本书讲解了从静态网站提取数据的方法,以及如何使用数据库和文件缓存技术来节省时间并管理服务器负载,然后介绍了如何使用浏览器、爬虫和并发爬虫开发一个更为复杂的爬虫。

借助于 PyQt 和 Selenium,你可以决定何时以及如何从依赖 JavaScript 的网站上爬取数据,以及更好地理解在受 CAPTCHA 保护的复杂网站上提交表单的方法。本书还讲解了使用 Python 包(比如 mechanize)进行自动化处理的方法、使用 Scrapy 库创建基于类的爬虫的方法,以及如何在真实的网站上实施所学的爬虫技巧。

本书最后还涵盖了使用爬虫对网站进行测试、远程爬取技术、图像处理以及其他相关的主题。

适读人群:Python 开发人员、搜索引擎开发人员

作者简介

Katharine Jarmul,德国柏林的一位数据科学家和 Python 支持者。她经营了一家数据科学咨询公司——Kjamistan,为不同规模的企业提供诸如数据抽取、采集以及建模的服务。她从2008年开始使用 Python 进行编程,从2010年开始使用 Python 抓取网站,并且在使用网络爬虫进行数据分析和机器学习的不同规模的初创企业中工作过。读者可以通过 Twitter(@kjam)关注她的想法以及动态。

Richard Lawson 来自澳大利亚,毕业于墨尔本大学计算机科学专业。毕业后,他创办了一家专注于网络爬虫的公司,为超过50个国家的业务提供远程工作。他精通世界语,可以使用汉语和韩语对话,并且积极投身于开源软件事业。他目前正在牛津大学攻读研究生学位,并利用业余时间研发自主无人机。

本书内容
前言

互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问。但是,这些数据难以复用。它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用。从网页中抽取数据的过程又称为网络爬虫,随着越来越多的信息被发布到网络上,网络爬虫也变得越来越有用。

本书使用的所有代码均已使用 Python 3.4+ 测试通过,并且可以在异步社区下载到。

本书内容

第1章,网络爬虫简介,介绍了什么是网络爬虫,以及如何爬取网站。

第2章,数据抓取,展示了如何使用几种库从网页中抽取数据。

第3章,下载缓存,介绍了如何通过缓存结果避免重复下载的问题。

第4章,并发下载,教你如何通过并行下载网站加速数据抓取。

第5章,动态内容,介绍了如何通过几种方式从动态网站中抽取数据。

第6章,表单交互,展示了如何使用输入及导航等表单进行搜索和登录。

第7章,验证码处理,阐述了如何访问被验证码图像保护的数据。

第8章,Scrapy,介绍了如何使用 Scrapy 进行快速并行的抓取,以及使用 Portia 的 Web 界面构建网络爬虫。

第9章,综合应用,对你在本书中学到的网络爬虫技术进行总结。

阅读本书的前提

为了有助于阐明爬取示例,我们创建了一个示例网站,其网址为http://example.python-scraping.com。用于生成该网站的源代码可以从异步社区获取到,其中包含了如何自行搭建该网站的说明。如果你愿意的话,也可以自己搭建它。

我们决定为本书示例搭建一个定制网站,而不是抓取活跃的网站,这样我们就对环境拥有了完全控制。这种方式提供了稳定性,因为活跃的网站要比书中的定制网站更新更加频繁,当你尝试运行爬虫示例时,代码可能已经无法工作。另外,定制网站允许我们自定义示例,便于阐释特定技巧并避免其他干扰。最后,活跃的网站可能并不欢迎我们使用它作为学习网络爬虫的对象,并且可能会封禁我们的爬虫。使用我们自己定制的网站可以规避这些风险,不过在这些例子中学到的技巧确实也可以应用到这些活跃的网站当中。

本书读者

本书假设你已经拥有一定的编程经验,并且本书很可能不适合零基础的初学者阅读。本书中的网络爬虫示例需要你具有 Python 语言以及使用 pip 安装模块的能力。如果你想复习一下这些知识,有一本非常好的免费在线书籍可以使用,其书名为 Dive Into Python,作者为 Mark Pilgrim,读者可在网上搜索并阅读。这本书也是我初学 Python 时所使用的资源。

此外,这些例子还假设你已经了解网页是如何使用 HTML 进行构建并通过 JavaScript 进行更新的知识。关于 HTTP、CSS、AJAX、WebKit 以及 Redis 的既有知识也很有用,不过它们不是必需的,这些技术会在需要使用时进行介绍。

第1章 网络爬虫简介
第2章 数据抓取
第3章 下载缓存
第4章 并发下载
第5章 动态内容
第6章 表单交互
第7章 验证码处理
第8章 Scrapy
第9章 综合应用

阅读全文: http://gitbook.cn/gitchat/geekbook/5bd683988b3f803a63ef9f98

第1章 网络爬虫简介 1 1.1 网络爬虫何时有用 1 1.2 网络爬虫是否合法 2 1.3 背景调研 3 1.3.1 检查robots.txt 3 1.3.2 检查网站地图 4 1.3.3 估算网站大小 5 1.3.4 识别网站所用技术 7 1.3.5 寻找网站所有者 7 1.4 编第 一个网络爬虫 8 1.4.1 下载网页 9 1.4.2 网站地图爬虫 12 1.4.3 ID遍历爬虫 13 1.4.4 链接爬虫 15 1.5 本章小结 22 第2章 数据抓取 23 2.1 分析网页 23 2.2 三种网页抓取方法 26 2.2.1 正则表达式 26 2.2.2 Beautiful Soup 28 2.2.3 Lxml 30 2.2.4 性能对比 32 2.2.5 结论 35 2.2.6 为链接爬虫添加抓取回调 35 2.3 本章小结 38 第3章 下载缓存 39 3.1 为链接爬虫添加缓存支持 39 3.2 磁盘缓存 42 3.2.1 实现 44 3.2.2 缓存测试 46 3.2.3 节省磁盘空间 46 3.2.4 清理过期数据 47 3.2.5 缺点 48 3.3 数据库缓存 49 3.3.1 NoSQL是什么 50 3.3.2 安装MongoDB 50 3.3.3 MongoDB概述 50 3.3.4 MongoDB缓存实现 52 3.3.5 压缩 54 3.3.6 缓存测试 54 3.4 本章小结 55 第4章 并发下载 57 4.1 100万个网页 57 4.2 串行爬虫 60 4.3 多线程爬虫 60 4.3.1 线程和进程如何工作 61 4.3.2 实现 61 4.3.3 多进程爬虫 63 4.4 性能 67 4.5 本章小结 68 第5章 动态内容 69 5.1 动态网页示例 69 5.2 对动态网页进行逆向工程 72 5.3 渲染动态网页 77 5.3.1 PyQt还是PySide 78 5.3.2 执行 78 5.3.3 使用WebKit与网站交互 80 5.3.4 Selenium 85 5.4 本章小结 88 第6章 表单交互 89 6.1 登录表单 90 6.2 支持内容更新的登录脚本扩展 97 6.3 使用Mechanize模块实现自动化表单处理 100 6.4 本章小结 102 第7章 验证码处理 103 7.1 注册账号 103 7.2 光学字符识别 106 7.3 处理复杂验证码 111 7.3.1 使用验证码处理服务 112 7.3.2 9kw入门 112 7.3.3 与注册功能集成 119 7.4 本章小结 120 第8章 Scrapy 121 8.1 安装 121 8.2 启动项目 122 8.2.1 定义模型 123 8.2.2 创建爬虫 124 8.2.3 使用shell命令抓取 128 8.2.4 检查结果 129 8.2.5 中断与恢复爬虫 132 8.3 使用Portia编可视化爬虫 133 8.3.1 安装 133 8.3.2 标注 136 8.3.3 优化爬虫 138 8.3.4 检查结果 140 8.4 使用Scrapely实现自动化抓取 141 8.5 本章小结 142 第9章 总结 143 9.1 Google搜索引擎 143 9.2 Facebook 148 9.2.1 网站 148 9.2.2 API 150 9.3 Gap 151 9.4 宝马 153 9.5 本章小结 157
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值