Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何提取<;!----&燃气轮机;使用VBA?_Html_Vba_Internet Explorer_Web Scraping - Fatal编程技术网

Html 如何提取<;!----&燃气轮机;使用VBA?

Html 如何提取<;!----&燃气轮机;使用VBA?,html,vba,internet-explorer,web-scraping,Html,Vba,Internet Explorer,Web Scraping,我正试着用VBA刮一页。我知道如何通过id类和标记名获取元素。但现在我遇到了这个标签 <!-- <b>IE CODE : 3407004044</b> --> 如果没有,我如何提取这些评论 编辑: 我在tr元素中有一堆这样的td元素,我想提取IE代码:3407004044 下面是一组较大的HTML代码: <tr align="left"> <td width="50%" class="subhead1">

我正试着用VBA刮一页。我知道如何通过id类和标记名获取元素。但现在我遇到了这个标签

<!-- <b>IE CODE : 3407004044</b> -->
如果没有,我如何提取这些评论

编辑: 我在tr元素中有一堆这样的td元素,我想提取
IE代码:3407004044
下面是一组较大的HTML代码:

<tr align="left">
    <td width="50%" class="subhead1">                                                           

    ' this is the part that I want to extract
    <!-- <b>IE CODE : 3108011111</b> -->                                
    </td>
    <td rowspan="9" valign="top">
    <span id="datalist1_ctl00_lbl_p"></span>
    </td>
</tr>

“这是我想提取的部分
谢谢

您可以使用XPath:

substring-before(substring-after(//tr//comment(), "<b>"), "</b>")
before子字符串(//tr//comment(),“”)和“”之后的子字符串

要获取所需数据

请像这样尝试一下,如果您进一步修复它,它会起作用:

Option Explicit

Public Sub TestMe()

    Dim myString    As String
    Dim cnt         As Long
    Dim myArr       As Variant

    myString = "<!-- <b>IE CODE : Koj sega e</b> -->blas<hr>My Website " & _
                    "is here<B><B><B><!-- <b>IE CODE : nomer </b> -->" & _
                    "is here<B><B><B><!-- <b>IE CODE : 1? </b> -->"

    myString = Replace(myString, "-->", "<!--")
    myArr = Split(myString, "<!--")

    For cnt = LBound(myArr) To UBound(myArr)
        If cnt Mod 2 = 1 Then Debug.Print myArr(cnt)
    Next cnt

End Sub
选项显式
公共子TestMe()
将我的字符串变暗为字符串
暗淡的碳纳米管
Dim myArr作为变异体
myString=“blas
我的网站”&_ “在这里”和_ “在这儿”
myString=Replace(myString,“-->”,"
使用
你能在这里粘贴一个大一点的代码片段进行实验吗?前几天,当我在一个网站上工作时,在解析来自评论的数据时遇到了这样的困难。然而,问题是IE可以非常有效地处理它。你在脚本中的其他地方出错了。我已经添加了HTML代码片段它是一个注释节点。由于浏览器不支持XPath,因此无法使用IE搜索它。尽管您可以使用
txt=document.documentElement.innerHTML
读取页面中的所有HTML,然后使用正则表达式搜索目标代码:
IE代码:\w+
。但此HTML代码位于网页上在字符串上执行此操作时,我必须首先从网页中取出字符串。我如何才能做到这一点?@Digvijay-我知道的最好的方法-谷歌“美丽的汤”并花费2小时阅读教程:)使用VBA和internet explorer不可能吗?getelementsbytagname可以在这里使用吗?@Digvijay-是的。然而,在VBA中将HTML转换成字符串应该可以在Google中找到&SO-@Vitayata是的,我到处搜索过,我也使用了这种方法,通过
标记名
id
类名
,来获取数据,我的问题是
的标记名是什么?。如果我知道注释的标记名是什么,我将能够使用
getelementsbytagname(“”)
提取它。我不明白,我该如何使用它?我不熟悉VBA。您使用的工具/技术是什么?我无法识别代码语法
documnet.getelementsbytagname()
。。。它看起来就像
document.getElementsByTagName()
。。。您是否使用纯VBA或可以接受JavaScript的工具。你能用你想要的代码更新你的问题吗use@Digvijay哦,我刚刚发现VBA没有允许使用XPath的内置函数。我想它应该是类似于
document.getElementByXpath()
。。。但如果您仍想尝试实现XPath解决方案,则有一个解决方案……感谢您的帮助。:)
Option Explicit

Public Sub TestMe()

    Dim myString    As String
    Dim cnt         As Long
    Dim myArr       As Variant

    myString = "<!-- <b>IE CODE : Koj sega e</b> -->blas<hr>My Website " & _
                    "is here<B><B><B><!-- <b>IE CODE : nomer </b> -->" & _
                    "is here<B><B><B><!-- <b>IE CODE : 1? </b> -->"

    myString = Replace(myString, "-->", "<!--")
    myArr = Split(myString, "<!--")

    For cnt = LBound(myArr) To UBound(myArr)
        If cnt Mod 2 = 1 Then Debug.Print myArr(cnt)
    Next cnt

End Sub
 <b>IE CODE : Koj sega e</b> 
 <b>IE CODE : nomer </b> 
 <b>IE CODE : 1? </b>