返回

小白如何用Java编写爬虫程序

发布时间:2023-02-02 18:55:38 282
# html# java# 爬虫# java# 技术

初入爬虫行业的程序员,往往会因为爬虫代码一个字符错误导致程序不能正常运行而且检查起来繁琐,耗费大量的精力,前期学习可以借鉴同行的代码加以完善,后期等技术能力达到一定的标准再去自己优化编写代码。下文就是通过Java语言编程的一个爬虫程序,希望对小白用户有一些帮助。

下面就上核心代码:

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<String> 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 标签

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>

<a href="http://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>

<a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a>

<a href="http://v.baidu.com" name="tj_trvideo" class="mnav">视频</a>

<a href="http://tieba.baidu.com" name="tj_trtieba" class="mnav">贴吧</a>

<a href="https://img.hake.cc/net_images/h4unlqqb14t?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1" name="tj_login" class="lb">登录</a>

<a href="//www.baidu.com/more/" name="tj_briicon" class="bri" style="display: block;">更多产品</a>

<a href="http://home.baidu.com">关于百度</a>

<a href="http://ir.baidu.com">About Baidu</a>

<a href="http://www.baidu.com/duty/">使用百度前必读</a>

<a href="http://jianyi.baidu.com/" class="cp-feedback">意见反馈</a>

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: 所有的有效链接已访问结束, 程序退出.
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线