【问题标题】:html node parsing with ASP classic使用 ASP 经典的 html 节点解析
【发布时间】:2013-12-01 11:28:15
【问题描述】:

我花了一天的时间试图找到答案:经典 ASP 是否有可能使用 MSXML2.ServerXMLHTTP.6.0 - 解析 html 代码并通过给定 ID 提取 HTML 节点的内容?例如:

远程 html 文件:

<html>
.....
<div id="description">
some important notes here
</div>
.....
</html>

asp 代码

<%    
    ...
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    objHTTP.Open "GET", url_of_remote_html, False
    objHTTP.Send
    ...
%>

现在 - 我阅读了很多文档,可以将 HTML 作为源 (objHTTP.responseText) 和结构 (objHTTP.responseXML) 访问。但是在一个世界中,我如何使用该 XML 响应来访问该 div 的内容?我阅读并尝试了很多示例,但找不到任何可以解决的问题。

【问题讨论】:

    标签: parsing html asp-classic


    【解决方案1】:

    首先,按照原始代码 sn-p 执行 GET 请求:

    Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    http.Open "GET", url_of_remote_html, False
    http.Send
    

    接下来,创建一个正则表达式对象并设置模式以匹配具有所需 id 的元素的内部 html:

    Set regEx = New RegExp
    regEx.Pattern = "<div id=""description"">(.*?)</div>"
    regEx.Global = True
    

    最后,从第一个匹配中的第一个子匹配中提取内容:

    On Error Resume Next
    contents = regEx.Execute(http.responseText)(0).Submatches(0)
    On Error Goto 0
    

    如果出现任何问题,例如在文档中找不到匹配元素,contents 将是 Null。如果一切按计划进行,contents 应该会保存您要查找的数据。

    【讨论】:

    • 好吧,正则表达式 - 当然 :) 谢谢!这适用于唯一标签(这是我的情况)。多项式 - 再次感谢您
    • 不用担心。如果您想从不太具体的标签中获取数据,或者从文档中的多个标签中获取数据,您可以编写不同的模式并循环遍历 Execute() 返回的匹配项 - 范围很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多