为什么要做网络数据采集
如果你上网的唯一方式就是用浏览器,那么你其实失去了很多种可能。虽然浏览器可以更方便地执行 JavaScript,显示图片,并且可以把数据展示成更适合人类阅读的形式,但是网络爬虫收集和处理大量数据的能力更为卓越。不像狭窄的显示器窗口一次只能让你看一个网页,网络爬虫可以让你一次查看几千甚至几百万个网页。
另外,网络爬虫可以完成传统搜索发动机不能做的事情。用 Google 搜索“飞往波士顿最便宜的航班”,看到的是大量的广告和主流的航班搜索网站。Google只知道这些网站的网页会显示什么内容,却不知道在航班搜索应用中输入的各种查询的准确结果。但是,设计较好的网络爬虫可以通过采集大量的网站数据,做出飞往波士顿航班价格随时间变化的图表,告诉你买机票的最佳时间。
你可能会问:“数据不是可以通过 API 获取吗?”(如果你不熟悉 API,请阅读第 4 章。)确实,如果你能找到一个可以解决你的问题的 API,那会非常给力。它们可以非常方便地向用户提供服务器里格式完好的数据。当你使用像 Twitter 或维基百科的 API 时,会发现一个 API 同时提供了不同的数据类型。通常,如果有 API 可用,API 确实会比写一个网络爬虫程序来获取数据更加方便。但是,很多时候你需要的 API 并不存在,这是因为:
你要收集的数据来自不同的网站,没有一个综合多个网站数据的 API;
你想要的数据非常小众,网站不会为你单独做一个 API;
一些网站没有基础设施或技术能力去创建 API。
即使 API 已经存在,可能还会有请求内容和次数限制,API 能够提供的数据类型或者数据格式可能也无法满足你的需求。
这时网络数据采集就派上用场了。你在浏览器上看到的内容,大部分都可以通过编写 Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。
显然,大量的应用场景都会需要这种几乎可以毫无阻碍地获取数据的手段:市场预测、机器语言翻译,甚至医疗诊断领域,通过对新闻网站、文章以及健康论坛中的数据进行采集和分析,也可以获得很多好处。
Python网络数据采集pdf+epub+mobi+txt+azw3