JavaSE 利用正则表达式进行本地和网络爬取数据(爬虫)
以下是一个简单的JavaSE网络爬虫示例,使用正则表达式提取网页中的链接。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WebCrawler {
private static final String REGEX_LINK = "href=\"(https?://\\S+)\"";
private static final Pattern PATTERN_LINK = Pattern.compile(REGEX_LINK);
public static void main(String[] args) throws Exception {
URL url = new URL("http://example.com"); // 替换为你想爬取的网址
try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8))) {
String inputLine;
while ((inputLine = reader.readLine()) != null) {
Matcher matcher = PATTERN_LINK.matcher(inputLine);
while (matcher.find()) {
System.out.println(matcher.group(1)); // 输出匹配到的链接
}
}
}
}
}
这段代码使用了java.net
包中的URL
和URLConnection
类来打开网络连接,并使用java.util.regex
包中的Pattern
和Matcher
类来匹配HTML中的链接。这个简单的爬虫示例仅用于学习目的,并不适合用于大规模数据抓取,它可能违反目标服务器的robots.txt协议,违法,并且可能导致性能问题。在实际应用中,应该实现更复杂的处理,例如多线程下载、控制抓取频率、处理复杂的HTML结构等。
评论已关闭