为什么要做网络数据采集

如果你上网的唯一方式就是用浏览器,那么你其实失去了很多种可能。网络爬虫收集和处理大量数据的能力更为卓越。不像狭窄的显示器窗口一次只能让你看一个网页,网络爬虫可以让你一次查看几千甚至几百万个网页。

网络爬虫可以完成传统搜索引擎不能做的事情。设计较好的网络爬虫可以通过采集大量的网站数据,做出飞往波士顿航班价格随时间变化的图表,告诉你买机票的最佳时间。

  • 你要收集的数据来自不同的网站,没有一个综合多个网站数据的 API;
  • 你想要的数据非常小众,网站不会为你单独做一个 API;
  • 一些网站没有基础设施或技术能力去建立 API。

即使 API 已经存在,可能还会有请求内容和次数限制,API 能够提供的数据类型或者数据格式可能也无法满足你的需求。

这时网络数据采集就派上用场了。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。

这时网络数据采集就派上用场了。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。

显然,大量的应用场景都会需要这种几乎可以毫无阻碍地获取数据的手段:市场预测、机器语言翻译,甚至医疗诊断领域,通过对新闻网站、文章以及健康论坛中的数据进行采集和分析,也可以获得很多好处。

甚至在艺术领域,网络数据采集也为艺术创作开辟了新方向。由 Jonathan Harris 和 SepKamvar 在 2006 年发起的“我们感觉挺好”(We Feel Fine,http://wefeelfine.org/)项目,从大量英文博客中抓取许多以“I feel”和“I am feeling”开头的短句,最终做成了一个很受大众欢迎的数据可视图,描述了这个世界每天、每分钟的感觉。

无论你现在处于哪个领域,网络数据采集都可以让你的工作更高效,帮你提升生产力,甚至开创一个全新的领域。

用Python 执行JavaScript 代码的效率非常低,既费时又费力,尤其是在处理规模较大的JavaScript 代码时。如果有绕过JavaScript 并直接解析它的方法(不需要执行它就可以获得信息)会非常实用,可以帮你避开一大堆JavaScript 的麻烦事。

将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。这类OCR 系统有时会变得非常复杂,所有我建议你在实践这一章的代码示例之前先阅读下一节的内容。

虽然大多数人对单词“CAPTCHA”都很熟悉,但是很少人知道它的具体含义:全自动区 分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart)。它的奇怪缩写似乎表示,它一直在扮演着十分奇怪的角色。其目的是为了 阻止网站访问,而不是让访问更通畅,它经常让人类和非人类的网络机器人深陷验证码识 别的泥潭不能自拔。