温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
网络
数据
采集
技术
Java
爬虫
实战
CMYCMMYCYCMYKJava网爬虫从入到fy.pdf 1 2019/11/5 15:35:47 内 容 简 介 本书以 Java 为开发语言,系统地介绍了网络爬虫的理论知识和基础工具,包括网络爬虫涉及的 Java 基础知识、HTTP 协议基础与网络抓包、网页内容获取、网页内容解析和网络爬虫数据存储等。本书选取典型网站,采用案例讲解的方式介绍网络爬虫中涉及的问题,以增强读者的动手实践能力。同时,本书还介绍了 3 种 Java 网络爬虫开源框架,即 Crawler4j、WebCollector和 WebMagic。本书适用于 Java 网络爬虫开发的初学者和进阶者;也可作为网络爬虫课程教学的参考书,供高等院校文本挖掘、自然语言处理、大数据商务分析等相关学科的本科生和研究生参考使用;也可供企业网络爬虫开发人员参考使用。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 网络数据采集技术:Java 网络爬虫实战/钱洋,姜元春著.北京:电子工业出版社,2020.1 ISBN 978-7-121-37607-8.网.钱 姜.JAVA 语言程序设计.TP312.8 中国版本图书馆 CIP 数据核字(2019)第 219551 号 责任编辑:林瑞和 特约编辑:田学清 印 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:7201000 1/16 印张:23.75 字数:478.8 千字 版 次:2020 年 1 月第 1 版 印 次:2020 年 1 月第 1 次印刷 定 价:79.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件到 。本书咨询联系方式:010-51260888-819,。前言 近几年,网络空间大数据(Big Data)已成为各领域研究的热门话题。在企业应用方面,天猫利用海量的用户数据挖掘年轻消费者偏好,并将用户偏好反馈给手机研发部门,将其用于手机设计;汽车之家利用平台中用户生成的大数据对用户进行画像,在此基础上开展个性化营销。在学术界,很多领域的学者针对大数据衍生出的新问题开展学术研究,如大数据驱动的客户洞察、大数据驱动的个性化推荐、大数据驱动的管理决策等。在网络大数据环境下,数据采集尤为重要。因此,很多企业都提供了(高级)数据采集工程师的职位。对于很多在校大学生而言,尤其是硕士生和博士生,网络数据采集是一项必备的技能。在编写本书之前,笔者主要从事数据采集系统的设计与开发工作。在 CSDN 社区上,笔者撰写过一系列介绍 Java 网络爬虫的博客,这些博客为笔者的主页带来了不少访问量;同时,也有许多博客读者通过邮件的方式,向笔者咨询网络爬虫相关的工具使用、程序调试等问题。为此,笔者对 Java 网络爬虫所涉及的知识与技术进行了系统的梳理,并打算编写一本关于 Java 网络爬虫的书籍。在写作过程中,笔者与具有丰富网络爬虫教学经验的姜元春教授就写作逻辑、介绍的知识点、使用的案例等多方面的内容进行了多次讨论。本书的内容更加注重爬虫理论、开发基础与实战演练。基于对本书爬虫案例的研读,读者可以快速开发自己需要的其他网络爬虫程序。本书的内容 本书分为 9 章,具体内容如下所示。第 1 章至第 3 章:这 3 章重点介绍与网络爬虫开发相关的基础知识,其中包括网络爬虫的原理、Java 基础知识和 HTTP 协议等内容。第 4 章至第 6 章:这 3 章分别从网页内容获取、网页内容解析和网络爬虫数据存储 3 个方面介绍网络爬虫开发过程中所涉及的一系列技术。在这 3 章中,涉及很多开源工具的使用,如 Jsoup、HttpClient、HtmlCleaner、Fastjson、POI3 等。第 7 章:本章利用具体的实战案例,讲解网络爬虫开发的流程。通过对本章的学习,读者可以轻松开发 Java 网络爬虫。IV 网络数据采集技术Java 网络爬虫实战 第 8 章:针对一些复杂的页面,如动态加载的页面(执行 JavaScript 脚本),本章介绍了一款实用的工具Selenium WebDriver。第 9 章:本章重点介绍了 3 种比较流行的 Java 网络爬虫开源框架,即 Crawler4j、WebCollector 和 WebMagic。读者可根据数据采集需求,自行开发支持多线程采集、断点采集、代理切换等功能的网络爬虫项目。本书的特色 注重基础:俗话说,基础不牢,地动山摇。本书从可读性和实用性出发,重点介绍了网络爬虫中涉及的基础知识。系统性:本书系统地梳理了网络爬虫的逻辑和开发网络爬虫需要掌握的技术。对网络爬虫初学者和进阶者而言,学习这些内容将有利于解决数据采集过程中遇到的各种问题。详细的案例讲解:本书选取了较为典型的网站,讲解网络爬虫经常遇到的问题,如 HTTPS 请求认证问题、大文件内容获取问题、模拟登录问题、不同格式文件(文本、图片和 PDF 等)的存储问题、定时数据采集问题等。开源框架:本书介绍了 3 种 Java 网络爬虫开源框架,即 Crawler4j、WebCollector和 WebMagic。通过对这 3 种网络爬虫开源框架的学习,读者可以轻松开发一些高性能的网络爬虫项目。完整的代码:为便于读者学习,对于每个数据网络爬虫项目,笔者都提供了完整的代码,并且在代码中给出了清晰的注释。适合的读者 Java 网络爬虫开发的初学者和进阶者。科研人员,尤其是从事网络大数据驱动研究的硕士生和博士生。开设相关课程的高等院校的师生。企业网络爬虫开发人员。说明 网络爬虫作为一项技术,更应该服务于社会。在使用该技术的过程中,应遵守Robots 协议(互联网行业数据抓取的道德协议)。同时,需要注意对数据所涉及的知识产权和隐私信息进行保护。另外,采集数据时,需要注意礼貌,即不频繁地请求网前言 V 页,以防止给数据提供者的服务器造成不良影响。在使用所采集的数据时,需要注意是否涉及商业利益和相关法律。最后,本书中所有使用的案例皆为测试案例,仅供读者学习使用,本书中的 URL 均做了处理。基金项目 本书由国家自然科学基金重大项目课题“面向大数据的商务分析与计算方法以及支撑平台研究(71490725)”、国家自然科学基金重大研究计划子课题“面向商务领域的大数据资源池及集成示范平台(91746302)”、国家自然科学基金优秀青年基金“个性化营销理论与方法(71722010)”提供资助。勘误 由于笔者的水平有限,书中难免出现一些错误及不准确之处,恳请读者批评指正。为及时更正书中不恰当的内容,笔者在 CSDN 博客中创建了一个板块,读者可以将书中的问题以评论的方式进行反馈,笔者将针对这些问题进行勘误。另外,也欢迎读者通过发送电子邮件()的方式,反馈书稿的问题。致谢 感谢电子工业出版社的林瑞和编辑、合肥工业大学电子商务研究所的刘业政教授和孙见山副教授等给本书提出的宝贵建议。感谢华为的杜非、王佳佳和王锦坤师兄的帮助,是他们将我带入编程的世界。感谢淮南师范学院的孙娜丽女士对整本书稿写作语言的梳理。感谢合肥工业大学电子商务研究所的朱婷婷、杨露、田志强、宋颖欣、张雪、李哲、贺菲菲、叶畅、陶守正、梁瑞诚等博士参与本书内容的讨论。最后,希望热爱网络爬虫开发的小伙伴们能够喜欢本书。钱 洋 2019 年 9 月 【读者服务】【读者服务】微信扫码回复:(37607)获取本书配套代码 资源 获取更多技术专家分享视频与学习资源 加入读者交流群,与更多读者互动、与本书作者互动 目录 第 1 章 网络爬虫概述与原理.1 1.1 网络爬虫简介.1 1.2 网络爬虫分类.2 1.3 网络爬虫流程.4 1.4 网络爬虫的采集策略.5 1.5 学习网络爬虫的建议.5 1.6 本章小结.6 第 2 章 网络爬虫涉及的 Java 基础知识.7 2.1 开发环境的搭建.7 2.1.1 JDK 的安装及环境变量配置.7 2.1.2 Eclipse 的下载.9 2.2 基本数据类型.10 2.3 数组.11 2.4 条件判断与循环.12 2.5 集合.15 2.5.1 List 和 Set 集合.15 2.5.2 Map 集合.16 2.5.3 Queue 集合.17 2.6 对象与类.19 2.7 String 类.21 2.8 日期和时间处理.23 2.9 正则表达式.26 2.10 Maven 工程的创建.29 2.11 log4j 的使用.33 2.12 本章小结.40 VIII 网络数据采集技术Java 网络爬虫实战 第 3 章 HTTP 协议基础与网络抓包.41 3.1 HTTP 协议简介.41 3.2 URL.42 3.3 报文.44 3.4 HTTP 请求方法.46 3.5 HTTP 状态码.46 3.5.1 状态码 2XX.47 3.5.2 状态码 3XX.47 3.5.3 状态码 4XX.48 3.5.4 状态码 5XX.48 3.6 HTTP 信息头.48 3.6.1 通用头.49 3.6.2 请求头.52 3.6.3 响应头.55 3.6.4 实体头.56 3.7 HTTP 响应正文.57 3.7.1 HTML.58 3.7.2 XML.60 3.7.3 JSON.61 3.8 网络抓包.64 3.8.1 简介.64 3.8.2 使用情境.65 3.8.3 浏览器实现网络抓包.65 3.8.4 其他网络抓包工具推荐.70 3.9 本章小结.70 第 4 章 网页内容获取.71 4.1 Jsoup 的使用.71 4.1.1 jar 包的下载.71 4.1.2 请求 URL.72 4.1.3 设置头信息.75 4.1.4 提交请求参数.78 4.1.5 超时设置.80 目录 IX 4.1.6 代理服务器的使用.81 4.1.7 响应转输出流(图片、PDF 等的下载).83 4.1.8 HTTPS 请求认证.85 4.1.9 大文件内容获取问题.89 4.2 HttpClient 的使用.91 4.2.1 jar 包的下载.91 4.2.2 请求 URL.92 4.2.3 EntityUtils 类.97 4.2.4 设置头信息.98 4.2.5 POST 提交表单.100 4.2.6 超时设置.103 4.2.7 代理服务器的使用.105 4.2.8 文件下载.106 4.2.9 HTTPS 请求认证.108 4.2.10 请求重试.111 4.2.11 多线程执行请求.114 4.3 URLConnection 与 HttpURLConnection.117 4.3.1 实例化.117 4.3.2 获取网页内容.118 4.3.3 GET 请求.118 4.3.4 模拟提交表单(POST 请求).119 4.3.5 设置头信息.120 4.3.6 连接超时设置.121 4.3.7 代理服务器的使用.122 4.3.8 HTTPS 请求认证.122 4.4 本章小结.124 第 5 章 网页内容解析.125 5.1 HTML 解析.125 5.1.1 CSS 选择器.125 5.1.2 Xpath 语法.127 5.1.3 Jsoup 解析 HTML.128 5.1.4 HtmlCleaner 解析 HTML.135 X 网络数据采集技术Java 网络爬虫实战 5.1.5 HTMLParser 解析 HTML.139 5.2 XML 解析.144 5.3 JSON 解析.145 5.3.1 JSON 校正.145 5.3.2 org.json 解析 JSON.147 5.3.3 Gson 解析 JSON.152 5.3.4 Fastjson 解析 JSON.157 5.3.5 网络爬虫实战演练.159 5.4 本章小结.165 第 6 章 网络爬虫数据存储.166 6.1 输入流与输出流.166 6.1.1 简介.166