我想提取此网页中列出的玩具的链接: https://cebra.com.ar/category/73/Juego-de-Construccion.html
我有一个完整的过程(这里不做复制,因为它很长很复杂),在某些情况下,我有以下无效的代码:
BitBlt
有什么办法解决这个问题吗?
非常感谢!
答案 0 :(得分:1)
对象getElementsByTagName()
的函数HTMLDocument
返回一个列表,但是您试图访问一个对象的属性.href
,就好像它是单个对象一样。
您应该替换为:
Cells(erow, 1) = html.getElementsByTagName("a").href
与此
Cells(erow, 1) = html.getElementsByTagName("a")[yourIndex].href
...,其中yourIndex
是代表列表索引的数字(0
,1
,... n
)。
当然,您必须找到正确的规则以将正确的a
元素放置在正确的位置,因为仅获取带有标签a
的文档的所有元素就会在您的容器中检索到278个元素页面(包括所有页面页眉,页脚和其他我实际上认为不需要的东西):
答案 1 :(得分:1)
getElementsByTagName
返回一个集合,实际上您需要对其进行索引以获取特定元素。
但是,您不想要所有a
标签。这样效率低下,您将需要进行额外的测试以限制感兴趣的对象。您需要专门用于产品的链接,因此请使用attribute = value css selector来获取这些链接:
Dim links As Object, i As Long
Set links = html.querySelectorAll("[href^=product]")
For i = 0 to links.Length - 1
ActiveSheet.Cells(erow + i, 1) = links.item(i).href
Next
此:
[href^=product]
查找其值以^,href
开头的product
个属性。
如果您查看html页面,则可以看到每个目标链接都以该子字符串开头