java爬虫抓取网页数据(网络爬虫干了哪些活,?(本文)(图) )

优采云 发布时间: 2021-11-20 04:00

  java爬虫抓取网页数据(网络爬虫干了哪些活,?(本文)(图)

)

  本文内容来源于罗刚的书籍>;

  本文将介绍1:网络爬虫是做什么的?2:手动编写一个简单的网络爬虫;

  1:网络爬虫有什么作用?他的主要工作是根据指定的url地址发送请求,得到响应,然后解析响应。解析出新的 URL 路径,

  然后继续访问,继续解析;继续寻找需要的数据,继续解析新的URL路径。

  这是网络爬虫的主要工作。这是流程图:

  

  通过上面的流程图,您可以大致了解网络爬虫是做什么的,并基于这些,您可以设计一个简单的网络爬虫。

  一个简单爬虫的必要功能:

  1:发送请求并得到响应

  2:解析页面元素

  3:过滤并存储符合要求的数据

  4:处理URL路径

  这是包结构:

  

  下面是核心代码:

   public void crawling(String[] seeds) {

//使用*敏*感*词*初始化 URL 队列

System.out.println("MyCrawler: 使用*敏*感*词*初始化 URL 队列, 程序开始.");

Links.addUnvisitedUrlQueue(seeds);

//循环条件:是否 还有有效的待访问链接

while (Links.hasUnVisitedUrlList()) {

//先从待访问的序列中取出第一个

String url = Links.fetchHeadOfUnVisitedUrlQueue();

//将已经访问过的链接放入已访问的链接中;

Links.addVisitedUrlSet(url);

//根据URL得到page

Page page = Requests.request(url);

//对page进行解析:---- 解析DOM的某个标签

System.out.println("PageParserUtils: 解析页面出页面中所有的 a 标签");

Elements es = PageParserUtils.select(page, "a");

es.stream().map(Element::toString).forEach(System.out::println);

//对page进行解析:---- 得到新的链接

System.out.println("PageParserUtils: 解析出所有的 img 标签, 并得到 新链接 ");

Set links = PageParserUtils.getLinks(page, "img");

// Links管理类 新增链接

System.out.println("Links: 可以将解析出来的链接 添加到 待访问链接队列中 ");

links.stream().filter(link -> link.startsWith("http://www.baidu.com")).forEach(Links::addUnvisitedUrlQueue);

//对page进行处理: 将保存文件

System.out.println("Files: 将页面保存到本地");

Files.saveToLocal(page);

}

System.out.println("MyCrawler: 所有的有效链接已访问结束, 程序退出.");

}

  以下是操作的结果:

   MyCrawler: 使用*敏*感*词*初始化 URL 队列, 程序开始.

Links: 新增爬取路径: http://www.baidu.com

Links: 取出待访问的url : http://www.baidu.com

PageParserUtils: 解析页面出页面中所有的 a 标签

新闻

hao123

地图

视频

贴吧

登录

更多产品

关于百度

About Baidu

*敏*感*词*

意见反馈

PageParserUtils: 解析出所有的 img 标签, 并得到 新链接

Links: 可以将解析出来的链接 添加到 待访问链接队列中

Links: 新增爬取路径: http://www.baidu.com/img/gs.gif

Links: 新增爬取路径: http://www.baidu.com/img/bd_logo1.png

Files: 将页面保存到本地

文件:www.baidu.com.html已经被存储在/G:/code/java/myself/learn/crawlLearn/target/classes/temp\www.baidu.com.html

Links: 取出待访问的url : http://www.baidu.com/img/gs.gif

PageParserUtils: 解析页面出页面中所有的 a 标签

PageParserUtils: 解析出所有的 img 标签, 并得到 新链接

Links: 可以将解析出来的链接 添加到 待访问链接队列中

Files: 将页面保存到本地

文件:www.baidu.com_img_gs.gif.gif已经被存储在/G:/code/java/myself/learn/crawlLearn/target/classes/temp\www.baidu.com_img_gs.gif.gif

Links: 取出待访问的url : http://www.baidu.com/img/bd_logo1.png

PageParserUtils: 解析页面出页面中所有的 a 标签

PageParserUtils: 解析出所有的 img 标签, 并得到 新链接

Links: 可以将解析出来的链接 添加到 待访问链接队列中

Files: 将页面保存到本地

文件:www.baidu.com_img_bd_logo1.png.png已经被存储在/G:/code/java/myself/learn/crawlLearn/target/classes/temp\www.baidu.com_img_bd_logo1.png.png

MyCrawler: 所有的有效链接已访问结束, 程序退出.

  下面是代码地址:

crawlLearn: java 爬虫入门 (gitee.com)

文章参考:

1: 自己动手写网络爬虫;

  

  2: https://github.com/CrawlScript/WebCollector

WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。

本文首发于2017年11月18号, 于2021年5月20日重做整理和修改.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线