爬虫入门 手写一个Java爬虫
本文内容 涞源于 罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ;
本文将介绍 1: 网络爬虫的是做什么的? 2: 手动写一个简单的网络爬虫;
1: 网络爬虫是做什么的? 他的主要工作就是 跟据指定的url地址 去发送请求,获得响应, 然后解析响应 , 一方面从响应中查找出想要查找的数据,另一方面从响应中解析出新的URL路径,
然后继续访问,继续解析;继续查找需要的数据和继续解析出新的URL路径 .
这就是网络爬虫主要干的工作. 下面是流程图:
通过上面的流程图 能大概了解到 网络爬虫 干了哪些活 ,根据这些 也就能设计出一个简单的网络爬虫出来.
一个简单的爬虫 必需的功能:
1: 发送请求和获取响应的功能 ;
2: 解析响应的功能 ;
3: 对 过滤出的数据 进行存储 的功能 ;
4: 对解析出来的URL路径 处理的功能 ;
下面是包结构:
下面就上代码:
RequestAndResponseTool 类: 主要方法: 发送请求 返回响应 并把 响应 封装成 page 类 ;
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
page 类: 主要作用: 保存响应的相关内容 对外提供访问方法;
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
PageParserTool: 类 主要作用 提供了 根据选择器来选取元素 属性 等方法 ;
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
Link 包 ;
Links 类: 两个属性: 一个是存放 已经访问的url集合的set ; 一个是存放待访问url集合的 queue ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
LinkFilter 接口: 可以起过滤作用;
package com.etoak.crawl.link; public interface LinkFilter { public boolean accept(String url); }
util 工具类
CharsetDetector 类; 获取字符编码
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
FileTool 文件下载类:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
RegexRule 正则表达式类;
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
主类:
MyCrawler :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
|
运行结果:
源码下载链接: https://pan.baidu.com/s/1ge7Nkzx 下载密码: mz5b 文章主要参考: 1: 自己动手写网络爬虫; 2: https://github.com/CrawlScript/WebCollector WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。