利用Java实现的网络爬虫详解
以下是一个简化的Java网络爬虫示例,使用了jsoup
库来解析HTML页面。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class SimpleCrawler {
public static void main(String[] args) {
String url = "https://example.com"; // 替换为你想爬取的网站
Set<String> visitedUrls = new HashSet<>();
crawlPage(url, visitedUrls);
}
private static void crawlPage(String url, Set<String> visitedUrls) {
if (!visitedUrls.contains(url) && url.startsWith("https://")) {
visitedUrls.add(url);
try {
Document document = Jsoup.connect(url).get();
System.out.println("Visiting: " + url);
Elements links = document.select("a[href]");
for (Element link : links) {
String newUrl = link.attr("abs:href");
crawlPage(newUrl, visitedUrls);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这段代码定义了一个SimpleCrawler
类,其中的main
方法设置了起始URL,并通过crawlPage
方法开始爬取页面。crawlPage
方法会检查URL是否已经访问过,并且是一个HTTPS链接,然后使用Jsoup
连接到该页面,解析HTML并提取所有的链接,递归地对每个链接进行爬取。
请注意,这个简单的爬虫示例没有处理重试逻辑、异步下载、图片、样式表或脚本的下载,也没有实现任何形式的速率限制,这些都是网络爬虫应该考虑的重要方面。在实际应用中,应该实现更复杂的逻辑来遵守网站的robots.txt
规则,并对爬虫进行适当的限制。
评论已关闭