写一个Java网络爬虫程序
时间: 2024-06-08 19:11:36 浏览: 126
好的,以下是一个简单的Java网络爬虫程序的示例代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WebCrawler {
private Set<String> visitedUrls = new HashSet<>();
private Pattern pattern = Pattern.compile("href=\"(http.*?)\"");
public void crawl(String url) {
try {
visitedUrls.add(url);
System.out.println("正在爬取网页:" + url);
URL currentUrl = new URL(url);
BufferedReader reader = new BufferedReader(new InputStreamReader(currentUrl.openStream()));
String line;
while ((line = reader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
String nextUrl = matcher.group(1);
if (!visitedUrls.contains(nextUrl)) {
crawl(nextUrl);
}
}
}
reader.close();
} catch (Exception e) {
System.out.println("爬取网页出错:" + e.getMessage());
}
}
public static void main(String[] args) {
WebCrawler crawler = new WebCrawler();
crawler.crawl("http://www.example.com");
}
}
```
这个程序使用递归的方式来实现爬取网页。它首先访问指定的初始网页,然后从网页源代码中提取出所有的链接,并递归地访问这些链接。
在这个程序中,使用了java.net包中的URL和URLConnection类来进行网络连接,并使用java.util.regex包中的Pattern和Matcher类来解析网页源代码中的链接。
当然,这只是一个非常简单的爬虫程序,实际应用中还需要考虑很多因素,如URL去重、爬取深度控制、并发爬取等等。
阅读全文