该分栏(python网络数据爬取采集学习与实战)以 《python网络数据》([美] Ryan Mitchell) 为知识基础,进行学习和实战,有需要的可以通过相关渠道来去购买正版图书,该系列文章仅是本人对于该主题的学习笔记和一些看法,实战等,“如要自知,不离课本”,推荐图灵图书中文版进行学习。而该文仅是对该系列文章的初始说明(类型书籍前言),由于边学边写,有些地方学习和理解还不到位,欢迎各位批评指正。
下面我们看看书中有关编写人员对网络数据采集的一些看法:
书中译者说(陶俊杰老师):
每时每刻,搜索引擎和网站都在采集大量信息,非原创即采集。采集信息用的程序一般被 称为网络爬虫(Web crawler)、网络铲(Web scraper,可类比考古用的洛阳铲)、网络蜘 蛛(Web spider),其行为一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。 O’Reilly 这本书的封面图案是一只穿山甲,图灵公司把这本书的中文版定名为“Python 网 络数据采集”。当我们看完这本书的时候,觉得网络数据采集程序也像是一只辛勤采蜜的 小蜜蜂,它飞到花(目标网页)上,采集花粉(需要的信息),经过处理(数据清洗、存 储)变成蜂蜜(可用的数据)。网络数据采集可以为生活加点儿蜜,亦如本书作者所说, “网络数据采集是为普通大众所喜闻乐见的计算机巫术”。 网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机 器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。搜索引擎可以满 足人们对数据的共性需求,即“我来了,我看见”,而网络数据采集技术可以进一步精炼 数据,把网络中杂乱无章的数据聚合成合理规范的形式,方便分析与挖掘,真正实现“我 征服”。工作中,你可能经常为找数据而烦恼,或者眼睁睁看着眼前的几百页数据却只能 长恨咫尺天涯,又或者数据杂乱无章的网站中满是带有陷阱的表单和坑爹的验证码,甚至 需要的数据都在网页版的 PDF 和网络图片中。而作为一名网站管理员,你也需要了解常用 的网络数据采集手段,以及常用的网络表单安全措施,以提高网站访问的安全性,所谓道 高一尺,魔高一丈……一念清净,烈焰成池,一念觉醒,方登彼岸。
网络数据采集也应该有所不为。国内外关于网络数据保护的法律法规都在不断地制定与完 善中,本书作者在书中介绍了美国与网络数据采集相关的法律与典型案例,呼吁网络爬虫 严格控制网络数据采集的速度,降低被采集网站服务器的负担。恶意消耗别人网站的服务 器资源,甚至拖垮别人网站是一件不道德的事情。众所周知,这已经不仅仅是一句“吸烟 有害健康”之类的空洞口号,它可能导致更严重的法律后果,且行且珍惜!
书中作者说([美] Ryan Mitchell):
在互联网上进行自动数据采集这件事和互联网存在的时间差不多一样长。虽然网络数据采 集并不是新术语,但是多年以来,这件事更常见的称谓是网页抓屏(screen scraping)、数 据挖掘(data mining)、网络收割(Web harvesting)或其他类似的版本。今天大众好像更 倾向于用“网络数据采集”,因此我在本书中使用这个术语,不过有时会把网络数据采集 程序称为网络机器人(bots)。
理论上,网络数据采集是一种通过多种手段收集网络数据的方式,不光是通过与 API 交互 (或者直接与浏览器交互)的方式。最常用的方法是写一个自动化程序向网络服务器请求 数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。 实践中,网络数据采集涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。
如果你上网的唯一方式就是用浏览器,那么你其实失去了很多种可能。虽然浏览器可以更 方便地执行 JavaScript,显示图片,并且可以把数据展示成更适合人类阅读的形式,但是 网络爬虫收集和处理大量数据的能力更为卓越。不像狭窄的显示器窗口一次只能让你看一 个网页,网络爬虫可以让你一次查看几千甚至几百万个网页。 另外,网络爬虫可以完成传统搜索引擎不能做的事情。用 Google 搜索“飞往波士顿最便 宜的航班”,看到的是大量的广告和主流的航班搜索网站。Google 只知道这些网站的网页 会显示什么内容,却不知道在航班搜索应用中输入的各种查询的准确结果。但是,设计 较好的网络爬虫可以通过采集大量的网站数据,做出飞往波士顿航班价格随时间变化的图 表,告诉你买机票的最佳时间。 你可能会问:“数据不是可以通过 API 获取吗?” 确实,如果你能找到一个可以解决你的问题的 API,那会非常给力。它们可以非常方便地 向用户提供服务器里格式完好的数据。当你使用像 Twitter 或维基百科的 API 时,会发现 一个 API 同时提供了不同的数据类型。通常,如果有 API 可用,API 确实会比写一个网络 爬虫程序来获取数据更加方便。但是,很多时候你需要的 API 并不存在,这是因为: 你要收集的数据来自不同的网站,没有一个综合多个网站数据的 API; 你想要的数据非常小众,网站不会为你单独做一个 API; 一些网站没有基础设施或技术能力去建立 API。 即使 API 已经存在,可能还会有请求内容和次数限制,API 能够提供的数据类型或者数据 格式可能也无法满足你的需求。 这时网络数据采集就派上用场了。你在浏览器上看到的内容,大部分都可以通过编写 Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。显然,大量的应用场景都会需要这种几乎可以毫无阻碍地获取数据的手段:市场预测、机器语言翻译,甚至医疗诊断领域,通过对新闻网站、文章以及健康论坛中的数据进行采集和分析,也可以获得很多好处。