java – 如何在Web爬网中获取内容
发布时间:2020-12-15 02:10:06 所属栏目:Java 来源:网络整理
导读:嗨!我正在尝试为蜘蛛算法实现这个伪代码来探索网络. 我需要一些关于伪代码下一步的想法:“使用SpiderLeg来获取内容”, 我在另一个类SpiderLeg中有一个方法,它有一个方法来获取该网页的所有URL,但想知道如何在这个类中使用它? // method to crawl web and
嗨!我正在尝试为蜘蛛算法实现这个伪代码来探索网络. // method to crawl web and print out all URLs that the spider visit public List<String> crawl(String url,String keyword) throws IOException{ String currentUrl; // while list of unvisited URLs is not empty while(unvisited != null ){ // take URL from list currentUrl = unvisited.get(0); //using spiderLeg to fetch content SpiderLeg leg = new SpiderLeg(); } return unvisited; } 干杯!!将尝试…但是我尝试了这个没有使用队列D.S,它几乎工作,但不会在搜索某些单词时停止程序. 当它发现它只显示网页的链接而不是它找到该单词的所有特定URL. private static final int MAX_PAGES_TO_SEARCH = 10; private Set<String> pagesVisited = new HashSet<String>(); private List<String> pagesToVisit = new LinkedList<String>(); public void crawl(String url,String searchWord) { while(this.pagesVisited.size() < MAX_PAGES_TO_SEARCH) { String currentUrl; SpiderLeg leg = new SpiderLeg(); if(this.pagesToVisit.isEmpty()) { currentUrl = url; this.pagesVisited.add(url); } else { currentUrl = this.nextUrl(); } leg.getHyperlink(currentUrl); boolean success = leg.searchForWord(searchWord); if(success) { System.out.println(String.format("**Success** Word %s found at %s",searchWord,currentUrl)); break; } this.pagesToVisit.addAll(leg.getLinks()); } System.out.println("n**Done** Visited " + this.pagesVisited.size() + " web page(s)"); } 解决方法
爬行算法本质上是
Breadth first search,您需要维护一个未访问URL的队列,每次访问您对其进行排队的URL时,您需要对从HTML解析器(SpiderLeg)中找到的任何未访问的URL进行排队. .
将URL添加到队列的条件取决于您,但通常您需要将URL与种子URL的距离保持为停止点,这样您就不会永远遍历Web.这些规则还可能包含您对搜索感兴趣的细节,以便您只添加相关的URL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |