没有 id VBA 的网页抓取
Web scraping without id VBA
我正在尝试抓取网页,有些元素很容易获得。但我对那些没有身份证的人有疑问。
<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 给了我一个错误:/..
有小费吗?
在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>
如果它捕获了太多项目,只需扩展正则表达式即可。
您没有指定错误,HTML 无法知道页面上有多少元素。
您可能忘记了对 document.getElementsByClassName("Title1")
使用索引,因为它 returns 是一个集合
例如,第一项为:document.getElementsByClassName("Title1")(0)
以同样的方式,您可以使用 CSS 查询选择器,例如 .Title1
这表示相同的事情,即 select ClassName 为 "Title1"
的元素。
对于第一个实例,只需使用:
document.querySelector(".Title1")
对于所有匹配的nodeList
document.querySelectorAll(".Title1")
然后遍历它的长度。
通常,您将访问元素的 .innerText
属性 以检索所需的字符串。
对于显示的代码段,假设该项目是 CSS select 页面上的第一个 .Title1
或者从您的 HTML
然后可以根据需要处理结果字符串。考虑到更新的源页面很容易破坏这些方法,这种方法和正则表达式充其量是脆弱的。
在上面的示例中,您可以使用 class 名称 .Title1
,然后使用 Replace()
删除 Tool &
。
我正在尝试抓取网页,有些元素很容易获得。但我对那些没有身份证的人有疑问。
<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 给了我一个错误:/..
有小费吗?
在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>
如果它捕获了太多项目,只需扩展正则表达式即可。
您没有指定错误,HTML 无法知道页面上有多少元素。
您可能忘记了对 document.getElementsByClassName("Title1")
使用索引,因为它 returns 是一个集合
例如,第一项为:document.getElementsByClassName("Title1")(0)
以同样的方式,您可以使用 CSS 查询选择器,例如 .Title1
这表示相同的事情,即 select ClassName 为 "Title1"
的元素。
对于第一个实例,只需使用:
document.querySelector(".Title1")
对于所有匹配的nodeList
document.querySelectorAll(".Title1")
然后遍历它的长度。
通常,您将访问元素的 .innerText
属性 以检索所需的字符串。
对于显示的代码段,假设该项目是 CSS select 页面上的第一个 .Title1
或者从您的 HTML
然后可以根据需要处理结果字符串。考虑到更新的源页面很容易破坏这些方法,这种方法和正则表达式充其量是脆弱的。
在上面的示例中,您可以使用 class 名称 .Title1
,然后使用 Replace()
删除 Tool &
。