畅销的 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 的既有知识也很有用,不过它们不是必需的,这些技术会在需要使用时进行介绍。
阅读全文: http://gitbook.cn/gitchat/geekbook/5bd683988b3f803a63ef9f98