gpt4 book ai didi

java - 使用 Jsoup 的网络爬虫(纽约时报)(链接中的链接)

转载 作者:行者123 更新时间:2023-12-01 13:11:18 25 4
gpt4 key购买 nike

我被分配了一项任务,即使用网络爬虫的概念来爬行“纽约时报”网站并显示该网站上最喜欢、最共享的文章等。 我使用JSOUP提取了《纽约时报》主页的所有链接。代码如下:

public static void processPage(String URL) throws IOException
{

Document doc = Jsoup.connect(URL).get();
Elements questions = doc.select("a[href]");
for(Element link: questions)
{
String absUrl1 = link.absUrl("href");
if(absUrl1.contains("nytimes.com")) {
System.out.println(absUrl1); }
}
}

此代码用于提取并显示包含“nytimes.com”的所有链接,但如何解析所有这些链接并提取该链接中的链接等等?这就是爬虫应该做的事情。但我无法弄清楚。我尝试递归调用 processPage 函数,但得到的输出与预期不符。

最佳答案

如果您使用的是单台计算机,那么队列适合您。

当您在页面中遇到需要抓取的链接时,请将它们添加到队列中。如果您想要单线程,您可以编写一个从该队列读取的 while 循环。最初,队列中可能有《纽约时报》链接。一旦该 URL 被拉取并爬网,更多的 URL 将进入队列进行处理。您可以对所有《纽约时报》文章继续执行此操作。

使用队列还可以让您轻松实现多线程,允许多个线程从队列中获取数据,从而有助于提高吞吐量。看一下生产者/消费者模式。

如果单台机器不够,您就必须做一些更分布式的事情,比如使用 Hadoop。雅虎使用 Hadoop 让多台机器同时抓取网络。

关于java - 使用 Jsoup 的网络爬虫(纽约时报)(链接中的链接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845025/

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