Python网络数据采集PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

点击获取提取码:jrno

image.png

内容提要

本书采用简洁强大的 Python 语言,介绍了网络数据采集,并为采集新式网络中的各种数据类 型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用 Python 从网络服务器 请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部 分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。 本书适合需要采集 Web 数据的相关软件开发人员和研究人员阅读。

目录

image.png
image.png
image.png
image.png

前言

对那些没有学过编程的人来说,计算机编程看着就像变魔术。如果编程是魔术(magic), 那么网络数据采集(Web scraping)就是巫术(wizardry);也就是运用“魔术”来实现精 彩实用却又不费吹灰之力的“壮举”。
说句实话,在我的软件工程师职业生涯中,我几乎没有发现像网络数据采集这样的编程实 践,可以同时吸引程序员和门外汉的注意。虽然写一个简单的网络爬虫并不难,就是先收 集数据,再显示到命令行或者存储到数据库里,但是无论你之前已经做过多少次了,这件 事永远会让你感到兴奋,同时又有新的可能。
不过遗憾的是,当和别的程序员提起网络数据采集时,我听到了很多关于这件事的误解 与困惑。有些人不确定它是不是合法的(其实合法),有人不明白怎么处理那些到处都是 JavaScript、多媒体和 cookie 的新式网站,还有人对 API 和网络爬虫的区别感到困惑。
这本书的初衷是要解决人们对网络数据采集的诸多问题与误解,并对常见的网络数据采集 任务提供全面的指导。

什么是网络数据采集

在互联网上进行自动数据采集这件事和互联网存在的时间差不多一样长。虽然网络数据采 集并不是新术语,但是多年以来,这件事更常见的称谓是网页抓屏(screen scraping)、数 据挖掘(data mining) 、网络收割(Web harvesting)或其他类似的版本。今天大众好像更 倾向于用“网络数据采集”,因此我在本书中使用这个术语,不过有时会把网络数据采集 程序称为网络机器人(bots)。
理论上,网络数据采集是一种通过多种手段收集网络数据的方式,不光是通过与 API 交互 (或者直接与浏览器交互)的方式。最常用的方法是写一个自动化程序向网络服务器请求 数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。
实践中,网络数据采集涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。本 书将在第一部分介绍关于网络数据采集和网络爬行(crawling)的基础知识,一些高级主 题放在第二部分介绍。

为什么要做网络数据采集

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

关于本书

本书不仅介绍了网络数据采集,也为采集新式网络中的各种数据类型提供了全面的指导。 虽然本书用的是 Python 编程语言,里面涉及 Python 的许多基础知识,但这并不是一本 Python 入门图书。
如果你不太懂编程,也完全不了解 Python,那么这本书看起来可能有点儿费劲。但是,如 果你懂编程,那么书中的内容可以很快上手。附录 A 介绍了 Python 3.x 版本的安装和使用 方法,全书将使用这个版本的 Python。如果你的电脑里只装了 Python 2.x 版本,可能需要 先看看附录 A。
如果你想更全面地学习 Python,Bill Lubanovic 写的《Python 语言及其应用》1 是本非常 好的教材,只是书有点儿厚。如果不想看书,Jessica McKellar 的教学视频 Introduction to Python(http://shop.oreilly.com/product/110000448.do)也非常不错。
附录 C 介绍并分析了几个商业案例以及犯罪事件,可以帮助你了解如何在美国合法地运行 网络爬虫并使用数据。
技术书通常都是介绍一种语言或技术,而网络数据采集是一个比较综合的主题,涉及数据 库、网络服务器、HTTP 协议、HTML 语言、网络安全、图像处理、数据科学等内容。本 书尝试涵盖网络数据采集的所有内容。
第一部分深入讲解网络数据采集和网络爬行相关内容,并重点介绍全书都要用到的几个 Python 库。这部分内容可以看成这些库和技术的综合参考(对于一些特殊情形,后面会提 供其他参考资料)。
第二部分介绍读者在动手编写网络爬虫的过程中可能会涉及的一些主题。不过,这些主题 的范围特别广泛,这部分内容也不足以道尽玄机。因此,文中提供了许多常用的参考资料 来补充更多的信息。

猜你喜欢

转载自www.cnblogs.com/jingluo/p/13375104.html