例如,如果我有一个HTML文档:
<html>
<body>
<p>Hello</p>
<p>World</p>
</body>
</html>
Hello
将在18到22的索引处,而World
将在32到36之间。
答案 0 :(得分:1)
简短的回答是否定的。
DOM和HTML 不相同。
DOM是一种树结构,它表示(模型化)文档的内容。在像HTML这样的语言(也是树形结构)中,DOM非常类似于源代码的结构,但它并不完全相同。
浏览器使用HTML构建DOM,但之后HTML并不重要。如果您有弱结构元素(例如<p>
没有结束</p>
)或者开始使用JavaScript操作它,情况尤其如此。
可以从DOM重构重构 HTML,但它不一定是相同的。这是因为您通常在HTML周围使用空格(包括换行符)以提高可读性。如果空格位于非文本元素中,则忽略空格,如果空格是混合元素,则将其添加到自己的文本节点。
如果原始HTML包含格式错误的代码,则重建也是不相同的。
使用DOM和JavaScript,以及一些明智的CSS选择器,您可以经常向前工作,并找到您拥有的。例如:
document.querySelector('html>body>p:nth-child(2)')
会在现代浏览器中找到第二段,但DOM无法知道原始HTML中数据的位置。
如果您不需要担心原始HTML,在白色空格,换行符和可能的格式错误的代码之前,那么可以通过重新构建HTML来找到您要查找的内容dom,只是搜索字符串。
否则,您需要将原始HTML作为字符串获取。如果您真的需要,要知道,您需要再次以文本形式获取页面。您可以使用Ajax执行此操作。