【问题标题】:How to find the href attribute using VBA/selenium/chrome?如何使用 VBA/selenium/chrome 找到 href 属性?
【发布时间】:2020-05-26 05:39:04
【问题描述】:

我对网络抓取相当陌生,我从使用 Chrome 的 VBA/Excel 中的 Selenium 开始。我的目标元素是菜单项。

在某些网站中,我可以找到元素,但无法获取它们的“href”。这是destination website。我想要页面右侧菜单项的“href”。

这是我尝试过的:

    ' geting the menus, working well:
        Set mnus = bot1.FindElementsByClass("topmenu") 

        MenuCounter = 0
        For Each mnu In mnus
     'getting the href, fails
            lnk = mnu.Attribute("href")

我也尝试了一些其他的方法,但没有成功。

这是检查的屏幕截图:

请注意,我不仅想要这个特定元素的 href(其 href 是“art”)。我还想要其他等效菜单项的href(第一项除外)。

【问题讨论】:

  • 需要更多信息。更多代码。有关它如何不工作的更多图片/信息。由于您是 Web Scraping 的新手,也许您可​​以看看 Beautiful Soup 和 Python

标签: vba selenium google-chrome href screen-scraping


【解决方案1】:

href 值在锚标签内而不是 li 元素。您需要定位锚标签。使用以下 css 选择器。

Set mnus = bot1.FindElementsByCssSelector("li.topmenu >a[href]")    
MenuCounter = 0
For Each mnu In mnus
    lnk = mnu.Attribute("href")

或者要获取所有菜单链接试试这个。

获取所有菜单链接

Set mnus = bot1.FindElementsByCssSelector("ul.topmenu a[href]")
MenuCounter = 0
For Each mnu In mnus
    lnk = mnu.Attribute("href")

【讨论】:

  • 非常感谢。这正是我所需要的。在阅读了您的回复后,我一直在寻找几个小时来实现语法。我在w3schools.com/cssref/css_selectors.asp 中找到了很好的材料,所以我学到的是这种语法: set x= bot.FindelementsbyCss(" element.class > childrenelement [desired attribute]") 。我说对了吗?
  • 可能是的。我对VBA了解不多。但是css选择器是正确的,只需检查语法即可。
  • 我还发现我可以将此选择器用于菜单项:#css3menu1 > li > a。 Tha 给了我所有的菜单项(包括第一个) 我想我已经了解了这个概念的基础知识。非常感谢昆杜克
猜你喜欢
  • 2019-02-14
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
相关资源
最近更新 更多