Html 如何提取<;!----&燃气轮机;使用VBA?
我正试着用VBA刮一页。我知道如何通过id类和标记名获取元素。但现在我遇到了这个标签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">
<!-- <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>