Python网络数据采集

网络爬虫是采集数据的主要手段之一,是大众喜闻乐见的计算机技术。工作和学习中经常通过Python写爬虫采集数据,偶然看到O'Reilly这本《Python网络数据采集》(Web Scarping with Python),作者经验丰富,给了我们很多帮助,感谢图灵社区给我们机会。Python写爬虫是很有趣的事情,电脑上装上Anaconda,就可以开始啦。写网络爬虫是一件很有成就感的事情,简单易用,老少皆宜,是学习编程计算的好起点。不过,数据量非常大或者考虑长期商用时,还是与对方建立合作关系更加合适。本书算是第一份工作的总结,那段时间有空,挺好!

下面分享我们的译者序,感谢小宝在我们翻译时安静的陪伴。

《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?抽一节课时间学一下吧。

网络数据采集也应该有所不为。国内外关于网络数据保护的法律法规都在不断地制定与完善中,本书作者在书中介绍了美国与网络数据采集相关的法律与典型案例,呼吁网络爬虫严格控制网络数据采集的速度,降低被采集网站服务器的负担。恶意消耗别人网站的服务器资源,甚至拖垮别人网站是一件不道德的事情。众所周知,这已经不仅仅是一句“吸烟有害健康”之类的空洞口号,它可能导致更严重的法律后果,且行且珍惜!

语言是思想的解释器,书籍是语言的载体。本书英文原著是作者用英文解释器为自己思想写的载体,而译本是译者根据英文原著以及与作者的交流,用简体中文解释器为作者思想写的载体。读者拿到的中译本,是作者思想经过两层解释器转换的结果,其目的是希望帮助中文读者消除语言障碍,理解作者的思想,与作者产生共鸣,一起面对作者曾经遇到的问题,共同探索解决问题的方法,从而帮助读者提高解决问题的能力,增强直面bug的信心。bug是产品生命中的挑战,好产品是不断面对bug并战胜bug的结果。译者水平有限,译文bug也在所难免,翻译有不到之处,还请各位读者批评指正!

最后要感谢图灵公司朱巍老师的大力支持,让译作得以顺利出版。也要感谢神烦小宝的温馨陪伴,每天6点叫我们起床,让业余时间格外宽裕。

2015年10月