Python
数据
抓取
技术
实战
Python 数据抓取技术与实战潘庆和摇 赵星驰摇 编著内 容 简 介数据抓取是获取大数据的一种主要手段。本书主要介绍使用 Python 语言及其相关工具进行数据抓取的方法,通过实例演示在数据抓取过程中常见问题的解决方法。通过本书的学习,读者可以根据需求快速地编写出符合要求的抓取程序。本书技术性强,注重应用和实战,可供从事数据获取的工程技术人员、理工科院校相关专业的本科生及大数据从业人员使用。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据Python 数据抓取技术与实战/潘庆和,赵星驰编著 郾 北京:电子工业出版社,2016郾 8ISBN 978-7-121-29884-4玉郾 淤P摇 域郾 淤潘摇 于赵摇 芋郾 淤软件工具-程序设计摇 郁郾 淤TP311郾 561中国版本图书馆 CIP 数据核字(2016)第 217952 号责任编辑:富摇 军摇 摇 特约编辑:刘汉斌印摇 摇 刷:装摇 摇 订:出版发行:电子工业出版社北京市海淀区万寿路 173 信箱摇 邮编 100036开摇 摇 本:787 伊1092摇 1/16摇 印张:16摇 字数:410 千字版摇 摇 次:2016 年 8 月第 1 版印摇 摇 次:2016 年 8 月第 1 次印刷印摇 摇 数:3 000 册摇 摇 定价:49郾 00 元凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 zlts phei郾 com郾 cn,盗版侵权举报请发邮件至 dbqq phei郾 com郾 cn。本书咨询联系方式:(010)88254456。前摇摇言大数据技术是当前工程和科学技术领域研究的热点。数据科学研究通常包括四个主要环节,即数据获取、数据存储、数据分析及数据可视化。本书主要聚焦数据获取环节。这是其他环节的基础。及时准确地获得丰富详实的数据,可为后续工作奠定坚实的基础,并提高分析结论的可信性和可靠性。互联网的开放性为数据的获取带来了极大的便利。本书基于 Python 语言的数据抓取技术,主要介绍如何快速准确地从网络上获得所需的数据,构建满足要求的数据集或大数据集。Python 语言是一种通用编程语言,可以应用于各种编程领域,在数据科学领域也是一种十分热门的语言。本书使用 Python 作为数据抓取技术的实现语言,利用 Python 丰富的模块支持和语言特性,解决绝大部分数据抓取中经常会遇到的问题。为了使不了解 Python 语言的读者快速上手,在第 1 章中介绍了阅读本书所需的 Python 语言基础知识。本书介绍了数据抓取涉及的各类技术问题和解决方法,并按章节进行组织,每章内容基本独立,可使读者在遇到问题时能够快速地进行问题定位。书中的内容侧重于将已有的成熟理论原理和流行框架应用于数据抓取实际问题的解决中。在编写过程中,只侧重介绍应用于数据抓取时的应用方式,并未对某些原理和框架进行详细的描述,感兴趣的读者可以进一步查找相关文献和资料来加深对概念和理论的理解。阅读时,读者可通过运行书中的实例代码,看到现象后再回头去分析,可有助于更好地理解相关的概念和原理,为进一步的研究打下基础。本书主要面向初学者,读者可基于书中的运行实例进行改造,设计出符合自己要求的数据抓取程序。本书可以迅速用于实战,可供相关专业工程技术人员和高校本科生阅读参考。感谢首席策划编辑富军老师的辛勤工作!感谢赵星驰老师在外文技术资料方面提供的帮助与协作!如果读者阅读中发现问题,请及时与我们联系,希望大家多多批评指正。编著者芋目摇摇录第 1 章摇 Python 基础11郾 1摇 Python 安装11郾 2摇 安装 pip61郾 3摇 如何查看帮助71郾 4摇 第一个实例101郾 5摇 文件操作251郾 6摇 循环281郾 7摇 异常301郾 8摇 元组301郾 9摇 列表321郾 10摇 字典361郾 11摇 集合381郾 12摇 随机数391郾 13摇 enumerate 的使用401郾 14摇 第二个实例41第 2 章摇 字符串解析462郾 1摇 常用函数462郾 2摇 正则表达式502郾 3摇 BeautifulSoup552郾 4摇 json 结构62第 3 章摇 单机数据抓取773郾 1摇 单机顺序抓取773郾 2摇 requests1073郾 3摇 并发和并行抓取117第 4 章摇 分布式数据抓取1374郾 1摇 RPC 的使用1384郾 2摇 Celery 系统145第 5 章摇 全能的 Selenium159吁5郾 1摇 Selenium 单机抓取1595郾 2摇 Selenium 分布式抓取1785郾 3摇 Linux 无图形界面使用 Selenium188第 6 章摇 神秘的 Tor1916郾 1摇 抓取时 IP 被封锁的问题1916郾 2摇 Tor 的安装与使用1926郾 3摇 Tor 的多线程使用1976郾 4摇 Tor 与 Selenium 结合205第 7 章摇 抓取常见问题2107郾 1摇 Flash2107郾 2摇 桌面程序2117郾 3摇 U 盘2137郾 4摇 二级三级页面2147郾 5摇 图片的处理2147郾 6摇 App 数据抓取214第 8 章摇 监控框架2218郾 1摇 框架说明2238郾 2摇 监控系统实例225第 9 章摇 拥抱大数据2299郾 1摇 Hadoop 生态圈2299郾 2摇 Cloudera 环境搭建231遇1第 1 章Python 基础Python 是一种动态类型脚本语言,具有简洁的语法,强大的表达能力,是当前数据科学领域主流的编程语言。其丰富的包和模块的支持可以使 Python 几乎能应用于各个领域。本书使用 Python 作为数据抓取的编程实施语言。本章主要介绍 Python 编程语言的基础知识及 Python 语言的安装和基本使用方法,通过两个抓取实例讲述 Python 的基本语法及后面各章中将会使用到的语法知识。在语言版本上选择了 Python3郾 4+作为开发语言,使用 3 以上版本的 Python 在字符串处理上会更加方便。如果没有使用 Python3 以上引入的新特性,那么都可以在对字符串处理并稍加改动后使用 Python2郾 7+执行。随着 Python3 的发展,很多 Python2郾 7 可使用的库和模块,Python3 都可以使用了,因此建议没有使用过 Python 的读者,可以直接安装 3 以上的版本学习和开发。在操作系统的选择上,本书的绝大部分实例是在 Ubuntu 14郾 04 trusty 64 位桌面系统下编写和运行的。如果 Python 版本相同的话,那么在 Windows 下可以直接运行书中的代码。使用 Windows 系统的读者可以利用 Vmware 虚拟机环境在虚拟机中搭建 Ubuntu 系统学习并使用书中的代码,可得到与书中一样的运行效果,也可以直接安装相应版本的Ubuntu 操作系统。1郾 1摇 Python 安装摇Python 是一种跨平台编程语言,可以安装在各类操作系统平台上。在 Ubuntu 14郾 04 系统上已经安装了 Python,下面介绍在 Windows 环境下安装和使用 Python 的方法。登录 Python 官网 https:/www郾 python郾 org/,如图 1-1 所示。在首页单击“Downloads冶进入下载页,如图 1-2 所示。以“Python3郾 4郾 3冶 为例,单击下载。在新打开的下载页面中定位到底部,可以看到该版本的相关下载文件,如图 1-3 所示。1摇 摇 摇 摇 P Py yt th ho on n 数数据据抓抓取取技技术术与与实实战战图 1-1摇 Python 首页图 1-2摇 Python 下载页以 Windows 7 为例,对于 64 位的系统可以选择在如图 1-3 所示中方框的文件下载。下载后双击安装即可,在安装的过程中要注意将 python郾 exe 添加到环境变量中,这样未来在打开 cmd 窗口时,就可以输入 python 进入 python 的交互环境了。图 1-4 给出了设置的位置,单击“Add python郾 exe to Path冶 前面的叉号,在弹出的下拉选项中选择“Will be in鄄stalled on local hard drive冶 即可,操作后如图 1-5 所示。接下来就可以进行下一步的安装,直至安装完成。安装完成后,启动 cmd,在命令行输入“python冶,然后回车,即可启动 python 的命令交互环境。启动 cmd 的方式主要有三种。第一种是在左下角单击“开始冶 按钮,定位到2第第 1 1 章章摇 摇 P Py yt th ho on n 基基础础摇 摇 摇 摇图 1-3摇 Python 的 Windows 下载文件图 1-4摇 将 python郾 郾 exe 添加到系统路径的选项“搜索程序和文件冶 的方框,如图 1-6 所示,输入“cmd冶 后回车,系统会自动搜索出cmd郾 exe,如图 1-7 所示。单击程序下的 cmd郾 exe,调出命令行,输入 python 执行即可,如图 1-8 所示。第二种方式是在任何窗口按住 shift 键,单击鼠标右键会弹出菜单,如图 1-9 所示。单击方框内的“在此处打开命令窗口冶 即可调出命令窗口。第三种是单击“开始冶 后,在“附件冶 中单击“命令提示符冶 启动命令行,如图1-10 所示。3摇 摇 摇 摇 P Py yt th ho on n 数数据据抓抓取取技技术术与与实实战战图 1-5摇 将 python郾 郾 exe 添加到系统路径图 1-6摇 搜索“cmd冶 的位置图 1-7摇 搜索出 cmd郾 exe图 1-8摇 在 cmd郾 exe 中调出 python 执行环境4第第 1 1 章章摇 摇 P Py yt th ho on n 基基础础摇 摇 摇 摇图 1-9摇 右键菜单打开 cmd郾 exe图 1-10摇 在“附件冶 中打开 cmd郾 exe在 Linux 平台,以 Ubuntu 14郾 04 为例,在系统安装时就默认安装了 Python 环境,而且在同时默认安装了 Python2郾 7 和 Python3郾 4郾 的情况下,在 shell 中输入 Python,启动的是Python2郾 7,如图 1-11 所示。图 1-11摇 默认启动 Python2郾 75摇 摇 摇 摇 P Py yt th ho on n 数数据据抓抓取取技技术术与与实实战战如果需要使用 Python3郾 4,则在 shell 命令行中输入 Python3郾 4 或 Python3 即可,如图 1-12所示。图 1-12摇 启动 Python3郾 41郾 2摇 安装 pip摇使用 Python 时,经 常 需 要 安 装 第 三 方 的 包 文 件,可 以 使 用 pip 进 行 安 装,在Ubuntu14郾 04下虽然已经安装了 Python2郾 7 和 Python3郾 4,但并没有安装相应 Python 版本的pip 包安装工具,如图 1-13 所示。图 1-13摇 Ubuntu 默认没有安装 pip 工具6第第 1 1 章章摇 摇 P Py yt th ho on n 基基础础摇 摇 摇 摇系统已经给出了安装的方法,使用提示的命令分别安装即可,命令为摇 摇摇sudo apt-get install python-pipsudo apt-get install python3-pip安装好后,可以在命令行查看,如图 1-14 所示。图 1-14摇 安装了 pip 工具安装好 pip 后,未来就可以在需要时安装第三方的 Python 包了。1郾 3摇 如何查看帮助摇1郾 help 函数Python 提供了内置函数 help,可以通过向 help 传递模块、函数、类、方法或 Python 关键