新书推荐 ‖ 《Python网络数据采集》
优采云 发布时间: 2022-05-10 10:19新书推荐 ‖ 《Python网络数据采集》
译者:陶俊杰,陈小莉
定价:59
网络上的数据量越来越大,单靠浏览网页获取信息越来越困难,如何有效地提取并利用信息已成为一个巨大的挑战。
本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。
作者译者
【Ryan Mitchell】
数据科学家、软件工程师。目前在波士顿LinkeDrive公司负责开发公司的API和数据分析工具。此前,曾在Abine公司构建网络爬虫和网络机器人。她经常做网络数据采集项目的咨询工作,主要面向金融和零售业。另著有:Instant Web Scraping with Java。
【陶俊杰】
长期从事数据分析工作,酷爱Python,每天都和Python面对面,乐此不疲。本科毕业于北京交通大学机电学院,硕士毕业于北京交通大学经管学院。曾就职于中国移动设计院,目前在京东任职。
【陈小莉】
长期从事数据分析工作,喜欢Python。本科与硕士毕业于北京交通大学电信学院。目前在中科院从事科技文献与专利分析工作。
网络数据采集
什么是网络数据采集
在互联网上进行自动数据采集这件事和互联网存在的时间差不多一样长。虽然网络数据采集并不是新术语,但是多年以来,这件事更常见的称谓是网页抓屏(screen scraping)、数据挖掘(data mining)、网络收割(Web harvesting)或其他类似的版本。今天大众好像更倾向于用“网络数据采集”,因此我在本书中使用这个术语,不过有时会把网络数据采集程序称为网络机器人(bots)。
理论上,网络数据采集是一种通过多种手段收集网络数据的方式,不光是通过与API交互(或者直接与浏览器交互)的方式。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。
实践中,网络数据采集涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。本书将在第一部分介绍关于网络数据采集和网络爬行(crawling)的基础知识,一些高级主题放在第二部分介绍。
为什么要做网络数据采集
如果你上网的唯一方式就是用浏览器,那么你其实失去了很多种可能。虽然浏览器可以更方便地执行JavaScript,显示图片,并且可以把数据展示成更适合人类阅读的形式,但是网络爬虫收集和处理大量数据的能力更为卓越。不像狭窄的显示器窗口一次只能让你看一个网页,网络爬虫可以让你一次查看几千甚至几百万个网页。
另外,网络爬虫可以完成传统搜索引擎不能做的事情。用Google搜索“飞往波士顿最便宜的航班”,看到的是大量的广告和主流的航班搜索网站。Google只知道这些网站的网页会显示什么内容,却不知道在航班搜索应用中输入的各种查询的准确结果。但是,设计较好的网络爬虫可以通过采集大量的网站数据,做出飞往波士顿航班价格随时间变化的图表,告诉你买机票的最佳时间。
你可能会问:“数据不是可以通过API获取吗?”(如果你不熟悉API,请阅读第4章。) 确实,如果你能找到一个可以解决你的问题的API,那会非常给力。它们可以非常方便地向用户提供服务器里格式完好的数据。当你使用像Twitter或维基百科的API时,会发现一个API同时提供了不同的数据类型。通常,如果有API可用,API确实会比写一个网络爬虫程序来获取数据更加方便。但是,很多时候你需要的API并不存在,这是因为:
•你要收集的数据来自不同的网站,没有一个综合多个网站数据的API;
•你想要的数据非常小众,网站不会为你单独做一个API;
•一些网站没有基础设施或技术能力去建立API。
即使API已经存在,可能还会有请求内容和次数限制,API能够提供的数据类型或者数据格式可能也无法满足你的需求。
这时网络数据采集就派上用场了。你在浏览器上看到的内容,大部分都可以通过编写Python程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。
显然,大量的应用场景都会需要这种几乎可以毫无阻碍地获取数据的手段:市场预测、机器语言翻译,甚至医疗诊断领域,通过对新闻网站、文章以及健康论坛中的数据进行采集和分析,也可以获得很多好处。
译者序
每时每刻,搜索引擎和网站都在采集大量信息,非原创即采集。采集信息用的程序一般被称为网络爬虫(Web crawler)、网络铲(Web scraper,可类比考古用的洛阳铲)、网络蜘蛛(Web spider),其行为一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。O’Reilly这本书的封面图案是一只穿山甲,图灵公司把这本书的中文版定名为“Python网络数据采集”。当我们看完这本书的时候,觉得网络数据采集程序也像是一只辛勤采蜜的小蜜蜂,它飞到花(目标网页)上,采集花粉(需要的信息),经过处理(数据清洗、存储)变成蜂蜜(可用的数据)。网络数据采集可以为生活加点儿蜜,亦如本书作者所说,“网络数据采集是为普通大众所喜闻乐见的计算机巫术”。
网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。搜索引擎可以满足人们对数据的共性需求,即“我来了,我看见”,而网络数据采集技术可以进一步精炼数据,把网络中杂乱无章的数据聚合成合理规范的形式,方便分析与挖掘,真正实现“我征服”。工作中,你可能经常为找数据而烦恼,或者眼睁睁看着眼前的几百页数据却只能长恨咫尺天涯,又或者数据杂乱无章的网站中满是带有陷阱的表单和坑爹的验证码,甚至需要的数据都在网页版的PDF和网络图片中。而作为一名网站管理员,你也需要了解常用的网络数据采集手段,以及常用的网络表单安全措施,以提高网站访问的安全性,所谓道高一尺,魔高一丈……一念清净,烈焰成池,一念觉醒,方登彼岸,本书试图成为解决这些问题的一念,让你茅塞顿开,船登彼岸。
网络数据采集并不是一门语言的独门秘籍,Python、Java、PHP、C#、Go等语言都可以讲出精彩的故事。有人说编程语言就是宗教,不同语言的设计哲学不同,行为方式各异,“非我族类,其心必异”,但本着美好生活、快乐修行的初衷,我们对所有语言都时刻保持敬畏之心,尊重信仰自由,努力做好自己的功课。对爱好Python的人来说,人生苦短,Python当歌!简洁轻松的语法,开箱即用的模块,强大快乐的社区,总可以快速构建出简单高效的解决方案。使用Python的日子总是充满快乐的,本书关于Python网络数据采集的故事也不例外。网络数据采集涉及多个领域,内容包罗万象,因此本书覆盖的主题较多,涉及的知识面相对广阔,书中介绍的Python模块有urllib、BeautifulSoup、lxml、Scrapy、PdfMiner、Requests、Selenium、NLTK、Pillow、unittest、PySocks等,还有一些知名网站的API、MySQL数据库、OpenRefine数据分析工具、PhanthomJS无头浏览器以及Tor代理服务器等内容。每行到一处,皆是风景独好,而且作者也为每一个主题提供了深入研究的参考资料。不过,本书关于多进程(multiprocessing)、并发(concurrency)、集群(cluster)等高性能采集主题着墨不多,更加关注性能的读者,可以参考其他关于Python高性能和多核编程的书籍。总之,本书通俗易懂,简单易行,有编程基础的同学都可以阅读。不会Python?抽一节课时间学一下吧。
目录
译者序ix
前言xi
第一部分创建爬虫
第1章初见网络爬虫2
第2章复杂HTML解析11
第3章开始采集26
第4章使用API42
第5章存储数据61
第6章读取文档80
第二部分高级数据采集
第7章数据清洗94
第8章自然语言处理103
第9章穿越网页表单与登录窗口进行采集120
第10章采集JavaScript128
第11章图像识别与文字处理139
第12章避开采集陷阱154
第13章用爬虫测试网站164
第14章远程采集174
附录APython简介181
附录B互联网简介184
附录C网络数据采集的法律与道德约束188
作者简介200
封面介绍200
活动
知道你期待这本书好久
快来说说你对网路数据采集的看法