
前言
为什么写作本书
大数据时代已经到来,网络爬虫技术已成为这个时代不可或缺的一项技术,企业需要数据来分析用户行为、产品的不足之处以及竞争对手的信息等,而这一切的首要条件就是数据的采集。在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。如何有效地采集并利用这些信息成了一个巨大的挑战,而网络爬虫是自动采集数据的有效手段。网络爬虫是一种按照一定的规则,自动抓取互联网海量信息的程序或脚本。网络爬虫的应用领域很广泛,如搜索引擎、数据采集、广告过滤、大数据分析等。
笔者多年来一直从事网络爬虫相关课程的讲授及科学研究工作,有着丰富的教学和实践经验。在内容编排上,本书采用梯度层次化结构,由浅入深地介绍爬虫的知识点、原理及应用,并结合大量实例讲解操作步骤,使读者能够快速地理解网络爬虫的核心技术。
内容介绍
全书共14章,具体内容如下:
第1章主要介绍Python的安装、配置和基础语法,以及Python的字符串、数据结构、控制语句和函数等;
第2章主要介绍爬虫的类型、爬虫的抓取策略以及深入学习爬虫所需的网络基础等相关知识;
第3章主要对爬虫技术中经常使用到的urllib、request、lxml和Beautiful Soup库等进行详细介绍,最后展示了4个利用Python爬取数据的实例;
第4章主要对Python中正则表达式的语法、匹配规则和re模块常用函数进行详细阐述,并给出了实例;
第5章主要对3种主流库(PIL库、Tesseract库和TensorFlow库)的语法、类型、识别方法和案例进行介绍;
第6章详细介绍Fiddler的安装与配置、捕获会话、QuickExec命令行的使用和Fiddler的断点功能等;
第7章主要介绍数据存储在文件中和存储在数据库中这两种存储方式;
第8章重点介绍Scrapy框架的Selector用法,以及Beautiful Soup库和CrawlSpider的使用,然后介绍了Scrapy Shell和Scrapyrt的使用;
第9章主要介绍多线程和Threading模块的基本概念;
第10章主要介绍如何对动态网页进行信息爬取,首先介绍了浏览器开发工具的使用,然后介绍了异步加载技术、AJAX技术和Selenium模拟浏览器;
第11章主要介绍分布式爬虫的原理及实现过程,然后介绍了Scrapy-redis分布式组件的工作机制和安装配置;
第12章主要介绍如何利用Selenium抓取并用pyquery解析电商网站的商品信息,然后将其保存到MongoDB;
第13章主要介绍静态网页和动态网页的爬取方法,并对请求-响应关系进行了介绍,然后介绍了请求头和请求体;
第14章主要讲解如何通过urllib模块和Scrapy框架实现图片爬虫项目,以及利用TensorFlow、KNN和CNN等机器学习框架进行训练的方法与过程。
主要特点
本书针对网络爬虫学习的特点,结合作者多年使用网络爬虫的教学和实践经验,由浅入深、从简到繁、图文并茂地介绍了Python基础语法、爬虫原理、爬虫常用库模块、正则表达式、验证码识别、抓包工具Fiddler、数据存储、Scrapy爬虫框架、多线程爬虫、动态网页爬虫和分布式爬虫等方面的内容。本书内容条理清晰、针对性强,语言通俗易懂,在讲解的过程中配合大量的实例操作,符合读者的学习习惯。每章都是从基础知识开始介绍,然后是实例分析,最后附以练习题巩固学习效果,将理论与实践紧密结合。
具体来讲,本书具有以下鲜明的特点:
·内容系统,由浅入深;
·案例讲解,通俗易懂;
·综合实战,注重实践。
读者对象
本书适合网络爬虫初学者,以及具有一定网络爬虫基础,但希望更深入了解、掌握爬虫原理与应用的中级读者阅读。
本书可以作为本科或者大专院校网络安全、电子信息、数据科学、网络工程等相关专业的教材,也可作为从事网络爬虫相关工作的科研或者工程技术人员的参考书。
致谢
本书由哈尔滨师范大学的赵国生和哈尔滨理工大学的王健编写。其中,赵国生主要负责第1~11章的编写,王健负责第12~14章的编写。参与本书大量辅助性工作的研究生有邹伊凡、刘冬梅、张婧婷、廖玉婷、晁绵星、谢宝文等,在此表示感谢。
特别感谢以下项目对本书的支持:国家自然科学基金项目“可生存系统的自主认知模式研究”(61202458)、国家自然科学基金项目“基于认知循环的任务关键系统可生存性自主增长模型与方法”(61403109)、高等学校博士点基金项目(20112303120007)、哈尔滨市科技创新人才研究专项(2016RAQXJ036)和黑龙江省自然科学基金(F2017021)。
感谢您选择本书,虽然笔者在编写过程中力求叙述准确、完善,但由于水平有限,书中仍可能存在欠妥之处,希望您可以把对本书的意见和建议告诉我们。
最后,再次希望本书能够对您的工作和学习有所帮助!