Java Httpconnection预处理jsoup或其他解析器的url内容

时间:2015-07-16 22:40:19

标签: java parsing web-crawler jsoup httpconnection

我有一个程序,它使用Java HttpConnection连接到Url。输入流由jsoup解析。我的问题是每个Url大约需要1秒钟。该网页有大约12000行代码,但我只需要一个特定区域(div中大约500行),所以我想知道我是否可以预处理输入流并将这部分代码交给jsoup进行解析。由于我有大约100.000页要爬网,我无法在一天内使用一台服务器处理它。我希望一种预处理可以降低解析时间。像50-150毫秒。我已经检查过jsoup解析是瓶颈而不是互联网连接/下载。

我很感激任何提示。

2 个答案:

答案 0 :(得分:0)

是的,当然,您的解决方案已走上正轨。

但问题是 - InputStream中的代码块从哪里开始? 这仅取决于HTML文档代码。

如果它非常具体,你可以从流中读取并丢弃那些不匹配的字节作为块的开头。

您可以阅读所有输入流并使用indexOf或某些RegExp模式(正则表达式要慢得多)。

然后添加<html><body>并将</body></html>添加到已解压缩的String,并在此处为JSoup解析

答案 1 :(得分:0)

我认为对于您的用例,JSoup可能是错误的工具。您可以从Java查看基于SAX的XML / HTML解析器库。

良好的实施应该和'#34;残酷的&#34;一样快。字符串搜索您的开始标记,以便您保持HTML语法领域。

这一切都取决于,如果您需要处理的HTML始终包含在相同(字面)标记中,那么来自@Xeon的方法可能会更快。如果标签发生了一些变化,您可能会发现基于SAX的解析器具有更好的结果。

以下是一些: