时间:2021-05-19
前言:写这篇文章之前,主要是我看了几篇类似的爬虫写法,有的是用的队列来写,感觉不是很直观,还有的只有一个请求然后进行页面解析,根本就没有自动爬起来这也叫爬虫?因此我结合自己的思路写了一下简单的爬虫。
一 算法简介
程序在思路上采用了广度优先算法,对未遍历过的链接逐次发起GET请求,然后对返回来的页面用正则表达式进行解析,取出其中未被发现的新链接,加入集合中,待下一次循环时遍历。
具体实现上使用了Map<String, Boolean>,键值对分别是链接和是否被遍历标志。程序中使用了两个Map集合,分别是:oldMap和newMap,初始的链接在oldMap中,然后对oldMap里面的标志为false的链接发起请求,解析页面,用正则取出<a>标签下的链接,如果这个链接未在oldMap和newMap中,则说明这是一条新的链接,同时要是这条链接是我们需要获取的目标网站的链接的话,我们就将这条链接放入newMap中,一直解析下去,等这个页面解析完成,把oldMap中当前页面的那条链接的值设为true,表示已经遍历过了。
最后是当整个oldMap未遍历过的链接都遍历结束后,如果发现newMap不为空,则说明这一次循环有新的链接产生,因此将这些新的链接加入oldMap中,继续递归遍历,反之则说明这次循环没有产生新的链接,继续循环下去已经不能产生新链接了,因为任务结束,返回链接集合oldMap
二 程序实现
上面相关思路已经说得很清楚了,并且代码中关键地方有注释,因此这里就不多说了,代码如下:
三 最后的测试效果
PS:其实用递归这种方式不是太好,因为要是网站页面比较多的话,程序运行时间长了对内存的消耗会非常大
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
爬虫协议Robots.txt是在网站上找到的第一个文件搜索蜘蛛。它告诉搜索引擎可以抓取哪些页面以及哪些页面无法抓取。网站设置robots.txt的好处:禁止搜索
在网站优化的时候,我们会把网站上面的死链统一删除掉,来保证爬虫的顺利抓取。那么不删除会怎么样呢?有哪些影响? 影响较大的就是搜索引擎的抓取了,当爬虫在网站抓取
对于搜索引擎而言,爬虫效率的一个重要评价标准就是爬虫开销。浅析提高全栖运营网站的抓取率的方法有哪些?Dasgupta等人将爬虫开销定义为:爬虫开销=重复抓取的老
一、给蜘蛛提供了良好的网站抓取路径搜索引擎的过程其实就是蜘蛛爬虫到网站上抓取新网页内容后给予这些页面排名,而如果您的网站处于地区节点那么就不能让网站很好的被抓取
网站地图,又称站点地图,它就是一个页面,上面放置了网站上需要搜索引擎抓取的所有页面的链接(注:不是所有页面)。大多数人在网站上找不到自己所需要的信息时,可能会将