gpt4 book ai didi

java - 控制运行时要抓取的 URL 列表

转载 作者:行者123 更新时间:2023-12-01 15:17:00 25 4
gpt4 key购买 nike

在crawler4j中我们可以重写函数boolean shouldVisit(WebUrl url)并通过返回“true”和“false”来控制是否允许抓取该特定网址。

但是我们可以在运行时添加 URL 吗?如果是,有什么方法可以做到这一点?目前我可以使用 addSeed(String url) 在程序开头添加 URL start(BasicCrawler.class, numberOfCrawlers) 之前的函数在CrawlController类,如果我尝试使用 addSeed(String url) 添加新的 url ,它给出错误。 Here是错误图像。

任何帮助将不胜感激,如果需要有关项目的更多详细信息来回答问题,请告诉我。

最佳答案

你可以做到这一点。

使用public void Schedule(WebURL url)将URL添加到爬虫前沿,该前沿是Frontier.java类的成员。但为此,您需要具有 WebURL 类型的 url。如果您想从字符串中创建一个 WebURL 。请查看 CrawlController.java 类中的 addSeed()(下面的代码),了解它如何将字符串 (url) 转换为 WebURL。

还可以使用现有的边界实例。

希望这有帮助..

public void addSeed(String pageUrl, int docId) {
String canonicalUrl = URLCanonicalizer.getCanonicalURL(pageUrl);
if (canonicalUrl == null) {
logger.error("Invalid seed URL: " + pageUrl);
return;
}
if (docId < 0) {
docId = docIdServer.getDocId(canonicalUrl);
if (docId > 0) {
// This URL is already seen.
return;
}
docId = docIdServer.getNewDocID(canonicalUrl);
} else {
try {
docIdServer.addUrlAndDocId(canonicalUrl, docId);
} catch (Exception e) {
logger.error("Could not add seed: " + e.getMessage());
}
}

WebURL webUrl = new WebURL();
webUrl.setURL(canonicalUrl);
webUrl.setDocid(docId);
webUrl.setDepth((short) 0);
if (!robotstxtServer.allows(webUrl)) {
logger.info("Robots.txt does not allow this seed: " + pageUrl);
} else {
frontier.schedule(webUrl); //method that adds URL to the frontier at run time
}
}

关于java - 控制运行时要抓取的 URL 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11482612/

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