【问题标题】:How to make selenium Chromedriver run headlessly in VBA?如何使硒 Chromedriver 在 VBA 中无头运行?
【发布时间】:2018-02-03 12:55:24
【问题描述】:

我在 vba 中结合 selenium 编写了一些代码来解析一些电影标题和它从一个 torrent 网站发布的年份。我在刮刀中使用了ChromeDriver。当我执行我的脚本时,它会解析必填字段。

现在,我的问题是:我怎样才能做到headless?在其他语言中,可以将选项添加到驱动程序中以执行以下操作:

chrome_options = Options
chrome_options.add_argument ("--headless")
chrome_options.add_argument ("--window-size=2160,3840")
driver = WebDriver.Chrome(chrome_options = chrome_options)

当谈到向 vba 添加选项以使其无头时,我被卡住了。

这是我的基本方法(这是一种有效的方法,但浏览器是可见的):

Sub Demo_Test()
    Dim driver As New ChromeDriver, post As Object

    driver.get "https://yts.am/browse-movies"

    For Each post In driver.FindElementsByClass("browse-movie-bottom")
        r = r + 1: Cells(r, 1) = post.FindElementByClass("browse-movie-title").Text
        Cells(r, 2) = post.FindElementByClass("browse-movie-year").Text
    Next post
End Sub

任何有关使脚本无头运行的帮助,我们将不胜感激。提前致谢。

【问题讨论】:

  • 尝试driver.AddArgument "--headless",然后拨打driver.get "https://yts.am/browse-movies"
  • 感谢 Florent B.,提供如此出色的解决方案。

标签: vba selenium web-scraping selenium-chromedriver headless-browser


【解决方案1】:

当我已经在Florent B. 的评论中获得了可行的解决方案时,我认为我不应该继续打开这篇文章。这就是我们可以让ChromeDriver 无头运行的方法。

完整的脚本:

Sub Demo_Test()
    Dim driver As New ChromeDriver, post As Object

    With driver
        .AddArgument "--headless"   ''This is the fix
        .get "https://yts.am/browse-movies"
    End With

    For Each post In driver.FindElementsByClass("browse-movie-bottom")
        r = r + 1: Cells(r, 1) = post.FindElementByClass("browse-movie-title").Text
        Cells(r, 2) = post.FindElementByClass("browse-movie-year").Text
    Next post
End Sub

【讨论】:

  • 当使用 driver.AddArgument "--headless" 然后 driver.FindElementByClass 和 driver.IsElementPresen 不起作用。没有 AddArgument 它可以正常工作。我该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2018-04-13
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多