《网络数据采集技术:Java网络爬虫实战》是国内上很少见的讲解Java语言(而不是Python语言)网络爬虫的书籍。与Python语言相比,使用Java语言进行网络数据采集,具有采集效率更高、框架性能更好、敏捷易用等优点,而且针对大型搜索引擎系统的数据采集工作更多使用Java语言,故本书值得读者学习。编程语言的初学者也可通过本书进一步掌握Java语言的高级编程技能。
《网络数据采集技术:Java网络爬虫实战》以Java为开发语言,系统地介绍了网络爬虫的理论知识和基础工具,包括网络爬虫涉及的Java基础知识、HTTP协议基础与网络抓包、网页内容获取、网页内容解析和网络爬虫数据存储等。本书选取典型网站,采用案例讲解的方式介绍网络爬虫中涉及的问题,以增强读者的动手实践能力。同时,本书还介绍了3种Java网络爬虫开源框架,即Crawler4j、WebCollector和WebMagic。
《网络数据采集技术:Java网络爬虫实战》适用于Java网络爬虫开发的初学者和进阶者;也可作为网络爬虫课程教学的参考书,供高等院校文本挖掘、自然语言处理、大数据商务分析等相关学科的本科生和研究生参考使用;也可供企业网络爬虫开发人员参考使用。
第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
第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
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
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
6.1.2 File 类 166
6.1.3 文件字节流 169
6.1.4 文件字符流 172
6.1.5 缓冲流 176
6.1.6 网络爬虫下载图片实战 180
6.1.7 网络爬虫文本存储实战 184
6.2 Excel 存储 188
6.2.1 Jxl 的使用 188
6.2.2 POI 的使用 191
6.2.3 爬虫案例 198
6.3 MySQL 数据存储 202
6.3.1 数据库的基本概念 203
6.3.2 SQL 语句基础 203
6.3.3 Java 操作数据库 207
6.3.4 爬虫案例 217
6.4 本章小结 219
第7 章 网络爬虫实战项目 220
7.1 新闻数据采集 220
7.1.1 采集的网页 220
7.1.2 框架介绍 222
7.1.3 程序编写 223
7.2 企业信息采集 235
7.2.1 采集的网页 235
7.2.2 框架介绍 238
7.2.3 第一层信息采集 239
7.2.4 第二层信息采集 248
7.3 股票信息采集 256
7.3.1 采集的网页 256
7.3.2 框架介绍 257
7.3.3 程序设计 258
7.3.4 Quartz 实现定时调度任务 267
7.4 本章小结 271
第8 章 Selenium 的使用 272
8.1 Selenium 简介 272
8.2 Java Selenium 环境搭建 272
8.3 浏览器的操控 274
8.4 元素定位 276
8.4.1 id 定位 276
8.4.2 name 定位 277
8.4.3 class 定位 278
8.4.4 tag name 定位 278
8.4.5 link text 定位 278
8.4.6 Xpath 定位 279
8.4.7 CSS 选择器定位 279
8.5 模拟登录 280
8.6 动态加载JavaScript 数据(操作滚动条) 283
8.7 隐藏浏览器 285
8.8 截取验证码 287
8.9 本章小结 291
第9 章 网络爬虫开源框架 292
9.1 Crawler4j 的使用 292
9.1.1 Crawler4j 简介 292
9.1.2 jar 包的下载 292
9.1.3 入门案例 293
9.1.4 相关配置 297
9.1.5 图片的采集 300
9.1.6 数据采集入库 304
9.2 WebCollector 的使用 312
9.2.1 WebCollector 简介 312
9.2.2 jar 包的下载 313
9.2.3 入门案例 313
9.2.4 相关配置 318
9.2.5 HTTP 请求扩展 319
9.2.6 翻页数据采集 327
9.2.7 图片的采集 331
9.2.8 数据采集入库 334
9.3 WebMagic 的使用 347
9.3.1 WebMagic 简介 347
9.3.2 jar 包的下载 347
9.3.3 入门案例(翻页数据采集) 347
9.3.4 相关配置 351
9.3.5 数据存储方式 352
9.3.6 数据采集入库 355
9.3.7 图片的采集 365
9.4 本章小结 368
海量数据的出现催生了一种新的科研模式,即从数据中直接查找或挖掘所需要的信息。网络数据采集是商务、金融、公共管理等领域进行大数据分析的基础。本书系统梳理了网络数据采集的理论和基础知识,通过实际案例描述了网络数据采集技术的实现流程。基于本书的学习,读者可轻松开发一些数据采集项目,获取所需要的网络数据。
——清华大学教授、博士生导师 陈国青
数据采集是数据处理的首要环节,也是发掘和利用数据价值的基石。网络数据作为数据的重要来源,其采集手段多为网络爬虫。本书依托作者团队所承担的国家自然科学基金重大项目在数据采集方面的研究成果,系统地介绍了其相关技术(均得到实践验证),能够很好地帮助数据采集技术的初学者和进阶者。
——中国科学院计算技术研究所研究员、博士生导师 程学旗
数据作为一种重要资源,对创新社会治理、经济转型升级、科技创新能力提升的作用显著。采集数据是实现数据价值的基础性工程,受到社会各界的高度重视。本书提供了多个网络数据采集项目的详细代码,并附有注释,便于读者理解与进行实际项目的开发。
——上海数据交易中心项目总监 卓训方
对于大学生,以及从事数据挖掘、数据商务分析等相关研究的硕士生和博士生而言,网络数据采集已是一项必备技能。本书详细介绍了Java网络爬虫技术所涉及的一系列工具,同时也介绍了一些流行的网络爬虫开发框架,非常适合莘莘学子参考使用。
——合肥工业大学教授、博士生导师 刘业政