下面是我尝试从网页中的节点获取值的一些代码。但在尝试设置 objNode 时失败...非常感谢任何帮助。
Dim objHttp, sWebPage, objNode, objDoc
Set objDoc = CreateObject("MSXML2.DOMDocument")
objDoc.Load "http://www.hl.co.uk/shares/shares-search-results/a/aveva-group-plc-ordinary-3.555p"
' objDoc.setProperty "SelectionLanguage", "XPath"
' Find a particular element using XPath:
Set objNode = objDoc.selectSingleNode("span[@id='ls-bid-AVV-L']")
MsgBox objNode.getAttribute("value")
- 非常乐观地期望 XML 解析器能够处理cleanHTML;对于有缺陷的 HTML,你可以忘记它(ref http://www.glennslayden.com/code/html-xml-dom).
- 你不应该在没有检查错误的情况下.load(see also https://stackoverflow.com/a/19195587/603855)。在您的情况下,抛出的 .reason 是“该元素上的属性‘property’未在 DTD/Schema 中定义。”
- 您可以使用以下命令关闭验证
objDoc.validateOnParse = False
并避免出现怪物页面问题objDoc.async = False
(至少没有“msxml3.dll:完成此操作所需的数据尚不可用。”错误)。
- 要在任何地方搜索跨度(不知道其在层次结构中的位置),您需要“//span[@id='ls-bid-AVV-L']”而不是“span[@id='ls-bid-AVV” -L']”。
- 要查找的跨度没有名为 value 的属性;要获得“1,334.00p”,您需要询问
objNode.text
.
- 但这一切都无济于事:该页面甚至没有格式良好。 .parseError.reason 是“结束标记‘div’与开始标记‘input’不匹配。”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)