产品特色
内容简介
本书将介绍如何使用Python编写网络爬虫程序获取互联网上的大数据。本书包括三部分内容:基础部分、进阶部分和项目实践。基础部分(第1~6章)主要介绍爬虫的三个步骤(获取网页、解析网页和存储数据),并通过诸多示例的讲解,让读者从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。进阶部分(第7~12章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。项目实践部分(第13~16章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。无论是否有编程基础,只要是对爬虫技术感兴趣的读者,本书就能带领读者从入门到进阶,再到实战,一步步了解爬虫,终写出自己的爬虫程序。
目录
推荐序 
推荐序二 
前言 
前言二 
第1章网络爬虫入门 
1.1为什么要学网络爬虫 
1.1.1 网络爬虫能带来什么好处 
1.1.2能从网络上爬取什么数据 
1.1.3应不应该学爬虫 
1.2网络爬虫是否合法 
1.2.1 Robots协议 
1.2.2 网络爬虫的约束 
1.3网络爬虫的基本议题 
1.3.1 Python爬虫的流程 
1.3.2三个流程的技术实现 
2章编写一个网络爬虫 
2.1搭建Python平台 
2.1.1 Python的安装 
2.1.2使用pip安装第三方库 
2.1.3使用编译器Jupyter编程 
2.2 Python使用入门 
2.2.1基本命令 
2.2.2数据类型 
2.2.3条件语句和循环语句 
2.2.4函数 
2.2.5面向对象编程 
2.3编写一个简单的爬虫 
第3章静态网页抓取 
第4章动态网页抓取 
第5章解析网页 
第6章数据存储 
第7章提升爬虫的速度 
第8章反爬虫问题 
第9章解决中文乱码 
第10章登录与验证码处理 
第11章服务器采集 
第12章分布式爬虫 
第13章爬虫实践一:维基百科 
第14章爬虫实践二:知乎Live 
第15章爬虫实践三:百度地图API 
第16章爬虫实践四:餐厅点评
前言/序言
爬虫程序是DT(Data Technology,数据技术)收集信息的基础,程序员爬取目标网站的资料后,就可以分析和建立应用了。我们关心的是科技如何给人家';#: 
 来实效,进而实现目标和理想,不能应用的技术称为魔术,JI能用J:表演。我们十分关注读者能否把握爬虫概念,所以相关的技术结合不同的实例讲解,希望能指导读者完成整个数据采集的流程。 
 Python是一个简单、有效的语言,爬虫所需的获取、存储、整理等流程都可以使用Python系统地实现。此外,绝大部分计算机也町以直接使用Python语言或简单地安装Python系统,相信读者一定能轻松地把Python作为爬虫的主要技术。 
 动心者,当具有大本大源DT的核心是从信息的源头去理解和分析,以做出能打动对方的行动决策力+案。由谷歌搜索到现在的大数据时代,爬虫技术的莺要性和广泛性‘直很突出。 
程序员理解了信息的获取、存储和整理各方面的基本关系,才有可能系统地收集和应用不同源头和千变万化的网站信息。 
 剡居共享程序员要建立共利的互联网环境,不能把爬虫作为窃取数据的J_|.具,爬虫必须在合情、合法、合理的情况下获取和应用。尊重数据供应者的知识产:权利正常运作才能产生长久共利的环境。保障对方平台的正常运作是每个程序员都应当做到的,因此我们把爬虫的制约放在本书的第1章讨论。 
自强不息 
互联网科技不断更新和进步,网站信息也随之不断改变。爬虫的乐趣在于如何一直高效率、持续不断地从日新月异的网站中获取信息。另外,程序员要不断学习新技术,自我提高,这样在爬虫的过程中才能够理解互联网的运作和结构。后,感谢好友唐松给予我一起创作这本书的机会,让我可以分享爬虫技术和当中的乐趣。 陈智铨 思路富邦智能应用有限公司行政总裁! 
近年来,大数据成为业界与学术界火热的话题之一,数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 
 执笔本书的起因是我打算在知乎上写博客向香港中文大学市场营销学的研究生讲解Python网络爬虫技术,让这些商科学生掌握一些大数据时代重要的技术能力。因此,本书除了面向技术人员外,还面向不懂编程的小白。本书尽量做到浅显易懂,希望能够将网络爬虫学习的门槛降低,让大家都能享受到使用网络爬虫编程的乐趣。 
 我是从商科自学转到数据科学的,因此编程和数据挖掘能力都是上网自学的。在这个过程中,我深刻地体会到,与不知所云的教学相比,深入浅出的教学对学习效率有很大提升。因此,学习知识重要的两点是,通过富有逻辑的框架解构学习和通过实战解决实际问题,从而增强学习效果。本书的内容侧重于将网络爬虫技术进行框架性的解构,并使用代码将爬虫技术应用于抓取真实的网站。 
 本书所有代码均在Python 3.6中测试通过,可以从Github下载这些代码,地址为https://github.com/Santostang/PythonScraping;也可以从百度网盘下载,地址为http://pan.baidu.com/s/lc2w9rck(注意区分数字和字母大小写)。为了方便大家练习Python网络爬虫,我专门搭建了一个博客网站用于Python网络爬虫的教学,本书教学部分的爬虫全部基于爬取我的个人博客网站( www.santostang.com)。一方面,由于这个网站不会更改设计和框架,因此本书的网络爬虫代码可以一直使用;另一方面,由于这是我自己的博客网站,因此可以避免一些法律上的风险。 
 本书主要分为三部分:基础部分(第1~6章)、进阶部分(第7~12章)和项目实践部分(第13~16章),以此来针对不同类型的读者。如果你是Python爬虫的初学者,那么可以先学习基础部分,这部分每一章的后都有自我实践题,读者可以通过实践题熟悉编写Python爬虫代码。如果你已经对Python爬虫有所了解,但是在实践中遇到了各种问题,那么可以直接学习进阶部分,这部分为你在爬虫实践中遇到的问题提供了解决方案。本书后的项目实践部分是让你在学习Python爬虫后,可以通过在真实网站中练习来消化和吸收Python爬虫的知识。 
 后,感谢卞诚君老师在我写书过程中给予的指导!感谢我的父母在撰写此书的过程中给予的支持和鼓励!还要感谢李宜威、周启航、吴嘉杰等各位朋友以及刘建南教授等各位前辈在我的数据科学之路上一直给予的支持和无私帮助! 
 唐松2017年6月
				
 
				
				
					《Python 网络爬虫从入门到实践:构建你的信息获取引擎》  在这浩瀚的数字海洋中,信息如繁星般闪烁,而网络爬虫正是我们深入探索这片星空的利器。本书将带你踏上一段激动人心的旅程,从零开始,掌握利用 Python 构建高效、智能网络爬虫的技能。我们不只是教授枯燥的代码,更将引导你理解爬虫背后的逻辑,以及如何在实际应用中发挥其巨大价值。  为什么选择 Python 进行网络爬虫开发?  Python 凭借其简洁的语法、丰富的库生态以及庞大的社区支持,已成为网络爬虫开发的首选语言。无论是初学者还是经验丰富的开发者,都能快速上手并高效地进行开发。本书将充分利用 Python 的优势,为你展示如何利用其强大的数据处理能力和灵活的编程范式,轻松应对各种网络爬取挑战。  本书的独特之处:  1.  零基础友好,层层递进: 我们深知初学者的困惑。本书从最基础的 Python 语法和网络基础知识讲起,逐步引入爬虫的核心概念和技术,确保你即便没有编程背景,也能轻松跟上。每一章都建立在前一章的基础上,让你在不知不觉中构建起坚实的知识体系。  2.  理论与实践深度融合: 死记硬背代码是低效的学习方式。本书注重理论知识的讲解,让你理解“为什么”这样做,而不是仅仅“怎么做”。更重要的是,我们提供了大量的真实案例和项目实践,让你在动手操作中巩固知识,掌握将理论转化为实际能力的技巧。  3.  涵盖核心爬虫技术栈: 从基础的 HTTP 请求,到强大的解析库 Beautiful Soup 和 lxml,再到处理动态网页的 Selenium,本书将为你一一剖析。你将学会如何发送请求、解析 HTML、提取所需数据,并能应对各种复杂的网页结构和反爬虫策略。  4.  关注爬虫的健壮性与效率: 爬虫的生命力在于其稳定性和效率。我们将探讨如何设计健壮的爬虫,使其能够优雅地处理网络异常、应对页面结构变化,以及如何通过多线程、异步编程等技术提升爬取速度,最大化你的信息获取效率。  5.  深入数据存储与分析: 爬取到数据只是第一步,如何有效地存储和利用这些数据才是关键。本书将介绍多种数据存储方案,包括文件存储(CSV、JSON)、关系型数据库(SQLite、MySQL)以及 NoSQL 数据库(MongoDB),并简要介绍如何利用 Python 的数据分析库(如 Pandas)对爬取到的数据进行初步分析和可视化,让你从原始数据中提炼有价值的信息。  6.  法律与道德的考量: 作为负责任的开发者,理解网络爬虫的法律边界和道德规范至关重要。本书将引导你了解 robots.txt 协议、网站的服务条款,以及如何避免对目标网站造成不必要的负担,确保你的爬虫行为合法合规。  本书内容概览:  第一部分:踏上爬虫之旅——基础篇     第一章:认识网络爬虫: 什么是网络爬虫?它能做什么?爬虫的类型与应用场景。    第二章:Python 基础回顾与准备: 快速回顾 Python 的核心语法,包括变量、数据类型、控制流、函数等。搭建 Python 开发环境,介绍常用的 IDE。    第三章:网络基础知识: 深入理解 HTTP/HTTPS 协议,GET 与 POST 请求,状态码,请求头与响应头,Cookie 的作用。    第四章:Python 的网络请求库 Requests: 学习如何使用 Requests 库发送各种 HTTP 请求,处理响应,设置请求头,模拟用户行为。  第二部分:精通数据抓取——解析与提取     第五章:HTML 与 CSS 基础: 掌握 HTML 文档结构,理解 CSS 选择器,这是高效定位网页元素的基础。    第六章:Beautiful Soup 权威指南: 学习使用 Beautiful Soup 解析 HTML 和 XML 文档,掌握查找、遍历、修改 DOM 树的各种方法,是处理结构化数据的利器。    第七章:lxml:性能与灵活的结合: 探索 lxml 库,它提供了 XPath 和 CSS 选择器两种强大的解析方式,并以其出色的解析速度而闻名。    第八章:从网页中提取信息: 综合运用 Requests、Beautiful Soup 或 lxml,从静态网页中提取文本、链接、图片等信息。  第三部分:挑战动态网页——现代爬虫技术     第九章:JavaScript 动态渲染页面的奥秘: 理解 JavaScript 如何动态生成网页内容,为什么直接使用 Requests 无法获取完整数据。    第十章:Selenium 自动化浏览器: 学习使用 Selenium 控制真实浏览器,模拟用户操作(点击、滚动、输入),处理 AJAX 请求,抓取动态加载的内容。    第十一章:Selenium 的进阶应用: 掌握等待机制、定位元素的高级技巧,以及如何处理下拉框、弹窗等复杂交互。  第四部分:构建强大的爬虫系统——进阶与优化     第十二章:处理反爬虫策略: 了解常见的反爬虫技术,如 User-Agent 伪装、IP 代理池、验证码识别(简要介绍思路),以及如何规避和应对。    第十三章:多线程与多进程爬取: 学习如何利用 Python 的多线程和多进程提高爬取效率,加速数据获取过程。    第十四章:异步 IO 与协程: 深入理解异步编程模型,掌握 `asyncio` 和 `aiohttp` 等库,实现高效的并发爬取。    第十五章:爬虫的异常处理与健壮性设计: 如何编写健壮的爬虫代码,处理网络超时、连接错误、页面解析失败等各种异常情况。  第五部分:数据落地与应用——存储与管理     第十六章:数据存储方案: 将爬取到的数据保存到文件(CSV、JSON),了解数据库的基本原理。    第十七章:使用 SQLite 存储数据: 快速上手 SQLite,在本地构建轻量级数据库,管理结构化爬取数据。    第十八章:使用 MySQL 存储数据: 学习如何连接和操作 MySQL 数据库,为更大型的数据存储需求打下基础。    第十九章:使用 MongoDB 存储数据: 探索 NoSQL 数据库 MongoDB 的优势,适用于存储半结构化或非结构化数据。  第六部分:法律、道德与未来展望     第二十章:网络爬虫的法律与道德边界: 深入理解 robots.txt、网站服务条款,以及数据抓取的法律风险和道德准则。    第二十一章:构建你的信息获取引擎: 整合所学知识,设计并实现一个完整的、具有实际应用价值的网络爬虫项目。    第二十二章:爬虫技术的未来趋势: 简要介绍机器学习在爬虫领域的应用,以及未来爬虫技术的发展方向。  谁适合阅读本书?     计算机科学、软件工程等相关专业的学生: 学习一门实用的编程技能,为未来的开发工作打下坚实基础。    对数据分析、市场调研感兴趣的从业者: 掌握从互联网获取一手数据的能力,为决策提供支持。    有志于从事爬虫开发、数据挖掘领域的程序员: 系统学习爬虫的核心技术,提升开发实战能力。    任何希望自动化信息获取,提高工作效率的职场人士: 学习一项能够解决实际问题的强大技能。    对互联网信息世界充满好奇,希望深入探索的爱好者: 开启你的数字探索之旅。  本书承诺:  我们将以最清晰、最易懂的方式,将网络爬虫的知识体系展现在你面前。你将不仅仅是学会编写代码,更能理解代码背后的逻辑,掌握解决问题的思路。从零开始,到精通实战,本书将是你成为一名优秀网络爬虫开发者的最佳伙伴。让我们一起,用 Python 打造属于你的信息获取引擎!