【问题标题】:Change from IE to MS Edge Browser, VBA web Scraping从 IE 更改为 MS Edge 浏览器,VBA 网页抓取
【发布时间】:2020-10-31 11:40:40
【问题描述】:

我目前使用 IE 进行一些网页抓取,因为您可能知道 IE 支持将在 2021 年 9 月结束。我现在想更新我的这段代码以使用 Windows Edge,但我不确定如何去做。

其余的代码都很好,我唯一需要更改的是使用另一个 Web 浏览器。不是每个人都会安装 Chrome 或 Firefox,所以我没有和他们一起去。但是 MS Edge 更新到所有窗口 PC

理想情况下,我希望它使用 Edge 或 IE,检查 PC 上安装了哪个并使用那个。但是我不知道该怎么做。我试图用谷歌搜索答案,但是它提到了 Shells,我不确定如何为此编写代码。

PS 我会将工作表发送给其他用户,因此它需要能够在他们的 PC 上工作,而不仅仅是我的。

Dim Html As HTMLDocument
Dim objIE As Object
Dim Y As Integer '''integer variable we'll use as a counter
Dim result As String ''''string variable that will hold our result link
Dim pageNumber As Long ''' Number of pages.
Dim nextPageElement As Object '''page element
Dim HtmlText As Variant '''for html data
Dim myCounter As Long '''counting the number of loops data goes to sheet10 q2

Dim wsSheet As Worksheet 
Dim wb As Workbook
    Set wb = ThisWorkbook
         Set wsSheet = wb.Sheets("Sheet2")
 Y = 0 

'''################ Internet Explorer ###################
Set objIE = New InternetExplorer 'initiating a new instance of Internet Explorer and asigning it to objIE
      objIE.Visible = True 
''' Url to NAVIGATE is taken from sheet10 as is the number of pages
    objIE.navigate Sheets("Sheet10").Range("F2").Value & Replace(Worksheets("Sheet10").Range("G2") & Range("H2").Value, " ", "+") 
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop '''wait here a few seconds while the browser is busy

    Set Html = objIE.document
        'The Parent Class is set in Sheet10 C2
        Set elements = Html.getElementsByClassName(Sheets("Sheet10").Range("C2")) ' parent CLASS
'''FOR LOOP
    For Each element In elements

一如既往地提前感谢。

【问题讨论】:

  • 是否可以在 Excel 中使用 Web 数据源?然后你就可以完全摆脱使用 VBA 了。

标签: excel vba web-scraping


【解决方案1】:

没有。

我相信 Webdriver 是 Edge 的前进方向。虽然cmets中有很好的内容针对这个问题:stackoverflow.com/questions/54814411/edge-browser-automation,但是没有给出答案。


使用 Webdriver,您有两个初始的非互斥选项:

  1. Microsoft Edge (Chromium)
  2. Microsoft Edge (EdgeHTML)

以下内容来自以上链接:

铬:

  • 安装 Microsoft Edge (Chromium)。要确认您已安装 Microsoft Edge (Chromium),请在浏览器中转到 edge://settings/help,并验证版本号是否为版本 75 或更高版本。

  • 导航到 Microsoft Edge Driver downloads page 并下载与您的 Edge 版本号 (edge://settings/help) 匹配的驱动程序

  • 下载特定语言的客户端驱动程序,将您的代码(Python、Java、C#、Ruby、JavaScript)转换为 Microsoft Edge 驱动程序在 Microsoft Edge (Chromium) 中运行的命令

EdgeHTML:

同上

  • 为您的 Windows 和 Microsoft Edge (EdgeHTML) 版本下载适当的 Microsoft WebDriver 服务器。
  • 下载您选择的 WebDriver 语言绑定。所有 Selenium 语言绑定都支持 Microsoft Edge (EdgeHTML)。

如果您在任何语言中使用过 Selenium,包括 VBA,那么从给定的代码示例中可以很容易地理解其余的内容。

当然,这涉及到语言的更改(来自 VBA),这并不能解决编写无需额外安装即可在大多数人的机器上运行的东西的真正问题,但看起来确实是前进的方向。您始终可以查看用户连接到的远程服务器安装,以保证软件的可用性(不确定这对许多人来说有多大的可扩展性)。

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 2020-08-06
    • 1970-01-01
    • 2021-01-02
    • 2020-03-19
    • 2021-09-29
    • 2014-05-23
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多