网络数据采集技术:Java网络爬虫实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

近几年,网络空间大数据(Big Data)已成为各领域研究的热门话题。在企业应用方面,天猫利用海量的用户数据挖掘年轻消费者偏好,并将用户偏好反馈给手机研发部门,将其用于手机设计;汽车之家利用平台中用户生成的大数据对用户进行画像,在此基础上开展个性化营销。在学术界,很多领域的学者针对大数据衍生出的新问题开展学术研究,如大数据驱动的客户洞察、大数据驱动的个性化推荐、大数据驱动的管理决策等。

在网络大数据环境下,数据采集尤为重要。因此,很多企业都提供了(高级)数据采集工程师的职位。对于很多在校大学生而言,尤其是硕士生和博士生,网络数据采集是一项必备的技能。

在编写本书之前,笔者主要从事数据采集系统的设计与开发工作。在CSDN社区上,笔者撰写过一系列介绍Java网络爬虫的博客,这些博客为笔者的主页带来了不少访问量;同时,也有许多博客读者通过邮件的方式,向笔者咨询网络爬虫相关的工具使用、程序调试等问题。为此,笔者对Java网络爬虫所涉及的知识与技术进行了系统的梳理,并打算编写一本关于Java网络爬虫的书籍。在写作过程中,笔者与具有丰富网络爬虫教学经验的姜元春教授就写作逻辑、介绍的知识点、使用的案例等多方面的内容进行了多次讨论。本书的内容更加注重爬虫理论、开发基础与实战演练。基于对本书爬虫案例的研读,读者可以快速开发自己需要的其他网络爬虫程序。

本书的内容

本书分为9章,具体内容如下所示。

第1章至第3章:这3章重点介绍与网络爬虫开发相关的基础知识,其中包括网络爬虫的原理、Java基础知识和HTTP协议等内容。

第4章至第6章:这3章分别从网页内容获取、网页内容解析和网络爬虫数据存储3个方面介绍网络爬虫开发过程中所涉及的一系列技术。在这3章中,涉及很多开源工具的使用,如Jsoup、HttpClient、HtmlCleaner、Fastjson、POI3等。

第7章:本章利用具体的实战案例,讲解网络爬虫开发的流程。通过对本章的学习,读者可以轻松开发Java网络爬虫。

第8章:针对一些复杂的页面,如动态加载的页面(执行JavaScript脚本),本章介绍了一款实用的工具——Selenium WebDriver。

第9章:本章重点介绍了3种比较流行的Java网络爬虫开源框架,即Crawler4j、WebCollector和WebMagic。读者可根据数据采集需求,自行开发支持多线程采集、断点采集、代理切换等功能的网络爬虫项目。

本书的特色

• 注重基础:俗话说,基础不牢,地动山摇。本书从可读性和实用性出发,重点介绍了网络爬虫中涉及的基础知识。

• 系统性:本书系统地梳理了网络爬虫的逻辑和开发网络爬虫需要掌握的技术。对网络爬虫初学者和进阶者而言,学习这些内容将有利于解决数据采集过程中遇到的各种问题。

• 详细的案例讲解:本书选取了较为典型的网站,讲解网络爬虫经常遇到的问题,如HTTPS请求认证问题、大文件内容获取问题、模拟登录问题、不同格式文件(文本、图片和PDF等)的存储问题、定时数据采集问题等。

• 开源框架:本书介绍了3种Java网络爬虫开源框架,即Crawler4j、WebCollector和WebMagic。通过对这3种网络爬虫开源框架的学习,读者可以轻松开发一些高性能的网络爬虫项目。

• 完整的代码:为便于读者学习,对于每个数据网络爬虫项目,笔者都提供了完整的代码,并且在代码中给出了清晰的注释。

适合的读者

• Java网络爬虫开发的初学者和进阶者。

• 科研人员,尤其是从事网络大数据驱动研究的硕士生和博士生。

• 开设相关课程的高等院校的师生。

• 企业网络爬虫开发人员。

说明

网络爬虫作为一项技术,更应该服务于社会。在使用该技术的过程中,应遵守Robots协议(互联网行业数据抓取的道德协议)。同时,需要注意对数据所涉及的知识产权和隐私信息进行保护。另外,采集数据时,需要注意礼貌,即不频繁地请求网页,以防止给数据提供者的服务器造成不良影响。在使用所采集的数据时,需要注意是否涉及商业利益和相关法律。最后,本书中所有使用的案例皆为测试案例,仅供读者学习使用,本书中的URL均做了处理。

基金项目

本书由国家自然科学基金重大项目课题“面向大数据的商务分析与计算方法以及支撑平台研究(71490725)”、国家自然科学基金重大研究计划子课题“面向商务领域的大数据资源池及集成示范平台(91746302)”、国家自然科学基金优秀青年基金“个性化营销理论与方法(71722010)”提供资助。

勘误

由于笔者的水平有限,书中难免出现一些错误及不准确之处,恳请读者批评指正。为及时更正书中不恰当的内容,笔者在CSDN博客中创建了一个板块,读者可以将书中的问题以评论的方式进行反馈,笔者将针对这些问题进行勘误。另外,也欢迎读者通过发送电子邮件(qy20115549@126.com)的方式,反馈书稿的问题。

致谢

感谢电子工业出版社的林瑞和编辑、合肥工业大学电子商务研究所的刘业政教授和孙见山副教授等给本书提出的宝贵建议。

感谢华为的杜非、王佳佳和王锦坤师兄的帮助,是他们将我带入编程的世界。

感谢淮南师范学院的孙娜丽女士对整本书稿写作语言的梳理。

感谢合肥工业大学电子商务研究所的朱婷婷、杨露、田志强、宋颖欣、张雪、李哲、贺菲菲、叶畅、陶守正、梁瑞诚等博士参与本书内容的讨论。

最后,希望热爱网络爬虫开发的小伙伴们能够喜欢本书。

钱洋

2019年9月