新书推荐 ‖ 《Python网络数据采集》

译者陶俊杰——

大家好!非常荣幸能加入图灵社区,并参与到《Python网络数据采集》这本书的翻译工作中,我所做的只是一个普通中国读者对作者原著的中文解释,您现在看到的中文版更多是依靠图灵团队的不懈努力,在此尤其要感谢图灵社区的朱巍老师对本书的大力支持。

本书介绍了Python网络数据采集常用的工具和技术,语言通俗易懂,案例生动有趣,有Python语言基础的同学都可以很快上手。全书分两部分,共14章。第一部分重点介绍网络数据采集的基本原理。从HTTP的GET方法开始,用Python的网络模块和BeautifulSoup程序包构建网络爬虫,深入介绍BeautifulSoup的各项功能,正则表达式和Lambda表达式的用法,并通过维基百科的六度分隔游戏演示多页面的跳转和递归采集方法。之后,作者介绍了网络API与网络爬虫工作方式的差异,用MySQL存储数据,以及读取在线CSV、PDF、Word文档等不同格式内容的方法。

第二部分深入剖析网络数据采集的难点痛点。首先介绍Python和OpenRefine工具清洗采集数据,用NLTK程序包进行自然语言处理。然后用requests程序包实现网页表单填写,页面登录,管理cookie等,利用Selenium处理网站的JavaScript。紧接着,作者介绍了用Python识别网站验证码,避开网站反爬虫检查,以及网站常用的表单安全措施及应对策略。最后,作者介绍了通过Python单元测试与Selenium单元测试实现网站自动化测试,以及远程采集和代理服务器的用法。另外,在本书附录部分,作者还介绍了美国网络数据采集的相关法律法规与案例,值得深思。

用Python的时光总是快乐的,希望这份快乐也能分享给大家。更希望中国的小朋友们从网络数据采集开始,喜欢Python,在Python的开源数据生态环境中茁壮成长。

万分感谢图灵的作译者愿意在百忙之中抽出时间为大家制作音频解读,来帮助小伙伴们更好地认识一本书。



作者:Ryan Mitchell

译者:陶俊杰,陈小莉

定价:59

  • 原书4.6星好评,一本书搞定数据采集

  • 涵盖数据抓取、数据挖掘和数据分析

  • 提供详细代码示例,快速解决实际问题

网络上的数据量越来越大,单靠浏览网页获取信息越来越困难,如何有效地提取并利用信息已成为一个巨大的挑战。

本书采用简洁强大的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,请阅读第章。) 确实,如果你能找到一个可以解决你的问题的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章 使用API 42

第5章 存储数据 61

第6章 读取文档 80

第二部分 高级数据采集

第7章 数据清洗 94

第8章 自然语言处理 103

第9章 穿越网页表单与登录窗口进行采集 120

第10章 采集JavaScript 128

第11章 图像识别与文字处理 139

第12章 避开采集陷阱 154

第13章 用爬虫测试网站 164

第14章 远程采集 174

附录A Python简介 181

附录B 互联网简介 184

附录C 网络数据采集的法律与道德约束 188

作者简介 200

封面介绍 200

活动

知道你期待这本书好久

快来说说你对网路数据采集的看法

从精选评论中挑选5位赠书

评论!评论!评论!

截止29日10:00



欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » 新书推荐 ‖ 《Python网络数据采集》

    标签:

点评 0

评论前必须登录!

登陆 注册