【发布时间】:2011-12-26 12:56:26
【问题描述】:
我需要使用 Java 从 HTTP 响应中抓取一些内容。响应中的必填字段为:foo、bar 和 bla。我目前的模式很慢。有什么想法可以改进吗?
回复:
...
<div class="ui-a">
<div class="ui-b">
<p><strong>foo</strong></p>
<p>bar</p>
</div>
<div class="ui-c">
<p><strong>bla</strong></p>
<p>...</p>
</div>
</div>
<div class="ui-a">
<div class="ui-b">
<p><strong>foo1</strong></p>
<p>bar1</p>
</div>
<div class="ui-c">
<p><strong>bla1</strong></p>
<p>...</p>
</div>
图案:
.*?<div class="ui-a">.*?<strong>(.*?)</strong>.*?<p>(.*?)</p>.*?</div>.*?<div class="ui-c">.*?<strong>(.*?)</strong>.*?
【问题讨论】:
-
XPath 表达式是否可行?
-
您是否尝试过常规的字符串搜索(indexOf 等)?
-
此外,如果您无法控制正在解析的 HTML,则标签中可能会出现换行符和空格,这将使您的 Pattern 无法匹配。见jsfiddle.net/qhAPa
标签: java regex performance optimization screen-scraping