java jsoup 爬虫 怎么防止重复爬取?使用jsoup抓取分页的问题
本文目录
java jsoup 爬虫 怎么防止重复爬取
正好最近在学习这方面的内容。
两种思路:
可以将当前爬取的url存在一个list中作登记,在下一次开始爬子链接的时候进行比对,如果已经存在在list中则跳过,如果不存在那么继续爬
可以将所有的url网络先遍历一遍存在list中,然后根据list而不是再次访问子链接url进行爬取,在url存入list的过程中进行查重处理
顺便为了方便控制。建议设置爬取深度,在一定深度内进行爬取。
使用jsoup抓取分页的问题
这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。其中Document doc = NetUtils.getDocument(url);是jsoup抓取页面的基本操作。public class HtmlAnalsysTest3 {static String url = "http://www.win4000.com/mt/huge.html";public static void main(String args) {analsysPage(url);for(String hurl : pageList){System.out.println(" hurl--》"+hurl);}}//已经抓取的用来迭代过滤static List《String》 hisurl = new ArrayList《String》();//所需要分页链接集合static List《String》 pageList = new ArrayList《String》();private static void analsysPage(String url){if(hisurl.contains(url)){System.out.println("hisurl :"+hisurl.size());return;}Document doc = NetUtils.getDocument(url);if(doc==null){System.out.println("doc is null "+url);return;}hisurl.add(url);String tag = "body a";String attr = "abs:href";String herfcontent = "mt/huge";//只筛选胡歌的连接Elements elemens = doc.select(tag);for(Element e : elemens){String href = e.attr(attr);if(!href.contains(herfcontent)){continue;}//System.out.println("页面page :"+ href);if(!pageList.contains(href)){pageList.add(href);}analsysPage(href);//迭代抓取,迭代过程会自动找后后续的页面}}}最终结果输出:hurl--》http://www.win4000.com/mt/huge_2.htmlhurl--》http://www.win4000.com/mt/huge_1.htmlhurl--》http://www.win4000.com/mt/huge_3.htmlhurl--》http://www.win4000.com/mt/huge_4.htmlhurl--》http://www.win4000.com/mt/huge_5.htmlhurl--》http://www.win4000.com/mt/huge.html
更多文章:
联想u410 i5 3337u(lenovo U410 i5-3337U 卖5000怎么样)
2024年7月28日 12:45
thinkpad r61e升级方案(联想R61E 想升级内存)
2023年8月23日 09:50
ipad air2上市时间及价格(ipad各种型号发布时间)
2024年7月9日 22:21
联想s40 70电脑多少钱(联想s40-70笔记本性能怎么样啊,价格多少)
2024年6月23日 07:13
华硕t100ha魔改(华硕t100ha 想重装系统 但是用不了pe怎么办)
2024年7月13日 09:46
ssd硬盘分区教程(固态硬盘分区的方法 怎么给固态硬盘分区呢)
2024年4月9日 02:20
联想电脑n480(联想N480电脑WIN7系统如何打开无线网络开关)
2024年6月22日 08:22
thinkpad官方旗舰店怎么样(请问: 卓越上的店铺:ThinkPad官方授权旗舰店,货品都是正品吗可靠吗谢谢)
2024年7月21日 02:20
联想笔记本z470拆机详细教程(联想Z470笔记本内存条怎么拆&装)
2024年5月4日 11:55
gtx970升级gtx1660有必要吗(GTX970显卡准备升级显卡选择1070还是GTX 1660Ti)
2024年4月14日 14:00
联想r400键盘功能(联想r4002784a73键盘上三个符号的怎么切换)
2023年10月16日 23:30