我正在尝试刮网,有些元素很容易搞定。但我对那些没有这种身份的人有一个问题。
<TABLE class=DisplayMain1 cellSpacing=1 cellPadding=0><TBODY>
<TR class=TitleLabelBig1>
<TD class=Title1 colSpan=100><SPAN style="FONT-FAMILY: arial narrow; FONT-WEIGHT: normal">Tool & </SPAN><BR>PE311934-1-1 </TD></TR></TBODY></TABLE>
我想要这个---►PE311934-1-1
我尝试使用“document.getElementsByClassName”,但vba给了我一个错误:/ ..
一些提示?
答案 0 :(得分:1)
在VBA中使用正则表达式和 XMLHttpRequest 对象
我前段时间做了一个AddIn,就是这样:
http://www.analystcave.com/excel-tools/excel-scrape-html-add/
如果您只想要源代码(GetElementByRegex函数):
http://www.analystcave.com/excel-scrape-html-element-id/
现在真正的正则表达式将非常简单:
</SPAN><BR>(.*?)</TD></TR></TBODY></TABLE>
如果它捕获太多项目,只需展开正则表达式。
答案 1 :(得分:0)
您没有指定错误,并且没有足够的HTML来了解页面上有多少元素。
您可能忘记使用document.getElementsByClassName("Title1")
的索引,因为它会返回一个集合
例如,第一项是:document.getElementsByClassName("Title1")(0)
以同样的方式,您可以使用CSS querySelector,例如.Title1
其中说同样的事情,即选择具有ClassName "Title1"
的元素。
首先只需使用:
document.querySelector(".Title1")
对于所有匹配的
的nodeList document.querySelectorAll(".Title1")
然后迭代它的长度。
通常,您将访问元素的.innerText
属性以检索所需的字符串。
对于显示的代码段,假设该项是页面上的第一个.Title1
,CSS选择器会从您的HTML中检索以下内容
然后可以根据需要处理结果字符串。考虑到更新的源页面可以轻易破坏这些方法,这种方法和正则表达式最多都是脆弱的。
在上面的示例中,您可以使用类名.Title1
,然后使用Replace()
删除Tool &
。