在搜索SO和Google时,我发现有一些Java HTML解析器一直被各方推荐.不幸的是,很难找到有关各种图书馆优势和劣势的任何信息.我希望有些人花了一些时间来比较这些库,并且可以分享他们学到的东西.
这是我见过的:
如果有一个我错过的主要解析器,我也很想知道它的优点和缺点.
谢谢!
我正在尝试使用Java解析带有正则表达式的链接.
但我认为它变得太慢了.例如,要从以下位置提取所有链接:
......花了34642毫秒(34秒!!!)
这是正则表达式:
private final String regexp = "<a.*?\\shref\\s*=\\s*([\\\"\\']*)(.*?)([\\\"\\'\\s].*?>|>)";
Run Code Online (Sandbox Code Playgroud)
模式的标志:
private static final int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL |Pattern.MULTILINE | Pattern.UNICODE_CASE | Pattern.CANON_EQ;
Run Code Online (Sandbox Code Playgroud)
代码可能是这样的:
private void processURL(URL url){
URLConnection connection;
Pattern pattern = Pattern.compile(regexp, flags);
try {
connection = url.openConnection();
InputStream in = connection.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
String html = new String();
String line = bf.readLine();
while(line!=null){
html += line;
line = bf.readLine();
}
bf.close();
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
System.out.println(matcher.group(2));
} …Run Code Online (Sandbox Code Playgroud)