java - HtmlCleaner 在 XPather 生成的某些 xpath 上失败

标签 java html xpath htmlcleaner

我正在使用 HtmlCleaner2.1 库来根据 html 评估 XPather 插件生成的 xpath,以从中抓取内容。但有时,HtmlCleaner 无法评估 xpath。

对于例如 http://www.megaoutdoors.co.uk/norwegen-army-shirt-zipped-roll-top-collar-278-p.asp

对于产品标题,XPather给出的xpath为//body/div[11]/div[6]/div[2]/form/div[1]/h1 但是当我使用 HtmlCleaner 评估它时,这失败了。

我们如何克服这个问题。 htmlcleaner清理时页面结构会改变吗?

谢谢
吉腾德拉

最佳答案

Does structure of page change when htmlcleaner cleans it?

根据http://htmlcleaner.sourceforge.net/上的介绍示例、HTMLCleaner当然可以在清理时改变页面的结构。在该示例中,它添加了 html 和 body 元素,并将 h1 元素移出表格。

为什么不在页面上运行 HTMLCleaner 并查看它的输出?然后您将能够判断结构是否以及如何改变。

Is there some way to avoid it or in other words, keep DOM generated by HtmlCleaner as close as possible to DOM built by browser.

您可以通过指定与default one不同的修改后的标签信息集来做到这一点。这显然是配置 DOM 的“更正”的内容。 (如果您使用命令行界面,请参阅 here 了解如何使用它。)

Or if you could suggest some another html parser, whose DOM is very close to DOM by browser, so that xpath generated by XPather plugin would fail very rarely.

我会尝试HTML Tidy看看它对 DOM 做了什么。它是一个广泛使用且成熟的程序,用于整理抓取的 HTML。

关于java - HtmlCleaner 在 XPather 生成的某些 xpath 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500718/

相关文章:

html - 文本转换是否为 : Capitalize work for <option> elements,?如果是,在哪些浏览器中?

javascript - CSS动画,将元素移到前面

xml - 带参数的递归 XSL 模板调用

javascript - 给我一个从 Javascript 对 KML 文档执行 xpath 查询的示例

java - 如何在 Java 8 中使用 Date API 实现精确的纳秒级精度

Java 队列页面替换

JAVA - 将用户输入打印到 HTML 中

html - 如何使用xpath在任意位置找到一个label属性

java - 有没有办法在 JTextArea 中支持真正的回车而不换行?

java - 如何使用正则表达式处理字符串