gpt4 book ai didi

java - 如何在网络爬虫中获取内容

转载 作者:搜寻专家 更新时间:2023-11-01 03:49:20 24 4
gpt4 key购买 nike

enter image description here

嗨!我正在尝试为 用于探索网络的蜘蛛算法实现此伪代码。需要我的下一步伪代码的一些想法:“使用 SpiderLeg 获取内容”,我在另一个类 SpiderLeg 中有一个方法,它有一个方法来获取该网页的所有 URL,但想知道我如何在这个类中使用它??

// 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 的距离作为停止点,这样您就不会永远遍历网络。这些规则还可能包括您感兴趣的搜索内容的具体信息,以便您仅添加相关的 URL。

关于java - 如何在网络爬虫中获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com