获取CSS选择器的前一个同级

获取CSS选择器的前一个同级,css,excel,vba,web-scraping,xmlhttprequest,Css,Excel,Vba,Web Scraping,Xmlhttprequest,在这个链接的QHarr代码中 我正在尝试以另一种方式使用CSS选择器。。我用了这个 img[title='Excel'] 但这将返回对象,而不是此选择器前面的链接 问题是如何引用前面的标记,即标记。。? 您不能在vba中使用css选择器选择父元素(您看到的是父子关系,而不是兄弟关系)。CSS层叠而下。此外,还有一种称为的东西开始发挥作用 您需要编写一个选择器,以满足您的需要,或者切换到selenium并使用xpath(尽管不确定selenium basic xpath实现中支持多少功能)。我在

在这个链接的QHarr代码中

我正在尝试以另一种方式使用CSS选择器。。我用了这个 img[title='Excel'] 但这将返回对象,而不是此选择器前面的链接 问题是如何引用前面的标记,即标记。。?

您不能在vba中使用css选择器选择父元素(您看到的是父子关系,而不是兄弟关系)。CSS层叠而下。此外,还有一种称为的东西开始发挥作用

您需要编写一个选择器,以满足您的需要,或者切换到selenium并使用xpath(尽管不确定selenium basic xpath实现中支持多少功能)。我在下面展示了两个合适的CSS选择器方法和一个XPath选项

您可以使用相同的attribute和$operator原则,以src为目标

[src$='xls.png']
所以

您还可以使用:

img[title=Excel]

使用xpath和selenium basic查找父级

Option Explicit
Public Sub GetParents()
    Dim d As WebDriver, elements As Object, element As Object
    Set d = New ChromeDriver
    Const URL = "https://www.jpx.co.jp/markets/public/short-selling/index.html"
    With d
        .get URL

        Set elements = .FindElementsByXPath("//img[@title='Excel']/parent::a")
        For Each element In elements
            Debug.Print element.Attribute("href")
        Next
         Stop
        .Quit
    End With
End Sub

指定具有特定子项的标记:
a img[title='Excel']
?非常感谢。但这将返回代码中的对象列表另一个xpath将是
“//a[img[@title='Excel']]”
。这也很好。非常感谢,非常感谢。我想知道如何处理前面的兄弟姐妹在vba中不能用css选择器处理前面的兄弟姐妹。CSS层叠而下。您需要编写一个选择器,以满足您的需要,或者切换到selenium并使用xpath(尽管不确定vba xpath实现中支持多少功能),因此在这种情况下如何使用xpath。。在excel vBA中?我很困惑,因为我认为您想要一个后代。你想在a之后使用img吗?非常感谢你的帮助
img[title=Excel]
Option Explicit
Public Sub GetParents()
    Dim d As WebDriver, elements As Object, element As Object
    Set d = New ChromeDriver
    Const URL = "https://www.jpx.co.jp/markets/public/short-selling/index.html"
    With d
        .get URL

        Set elements = .FindElementsByXPath("//img[@title='Excel']/parent::a")
        For Each element In elements
            Debug.Print element.Attribute("href")
        Next
         Stop
        .Quit
    End With
End Sub