使用硒的Excel中的Browser(Chrome)自动化

时间:2020-04-16 05:54:32

标签: excel vba selenium selenium-webdriver web-scraping

我正在使网站自动化以实现出色的复制粘贴效果。 这里的网站是政府网站,因此处理起来有些棘手。 我从该网站提取数据时遇到问题:------ http://nhb.gov.in/IndexPage.aspx?enc=nRXYbvwNFTF218kodGo9fg==

很少尝试使用的项目代码是:

  • 37TTG0000170
  • 28AAP0023256
  • 23MP0006837
  • 23AMP0006839

我有一个项目代码列表,应该从附加的excel文件中获取,粘贴到网站中,然后单击“验证”按钮。 See image 1

然后在下一页中,相同的项目代码将被超链接,单击该链接将使我们进入结果页面,其中包含有关该项目的信息,该信息将被提取并粘贴到相应项目代码旁边的excel工作表中,例如这些表和数据。(这是后面的部分,可以进行调整)。

下一个障碍是: 要从工作表中获取“下一个项目代码”,页面必须类似于第一个屏幕截图,可通过单击“返回列表” 来实现。见下图:

Image 2

单击后,将返回到需要单击“返回搜索页面” 的页面,该页面会将我们带到我们开始的主页,然后才可以粘贴新的项目代码。

请参阅最终结果页面-Final Result Page

我第一步尝试了一下: 1)打开页面 2)输入项目代码 3)点击“非常”按钮

使用以下代码,但是当Chrome打开时出现错误…… ChromeError

Option Explicit

Public Sub NHBsite()

Dim bot As WebDriver, rng As Range, Cell As Range
Dim ws As Worksheet

Const URL As String = "http://nhb.gov.in/IndexPage.aspx?enc=nRXYbvwNFTF218kodGo9fg=="

Set bot = New ChromeDriver
Set ws = ThisWorkbook.Worksheets("Data")
Set rng = ws.Range(ws.Range("A2"), ws.Range("A2").End(xlDown))

'bot.Window.Maximize

For Each Cell In rng
    bot.Get URL
    bot.FindElementById("ctl00_ContentPlaceHolder1_ctl00_txtProjectCode").SendKeys Cell.Value
    bot.FindElementById("ctl00_ContentPlaceHolder1_ctl00_btnSearchProject").Click
    bot.FindElementById("ctl00_ContentPlaceHolder1_ctl00_gvSerachDetails_ctl02_lblProjectCode").Click

    'bot.Wait 1000
    'bot.TakeScreenshot.SaveAs (ThisWorkbook.Path + "/Screenshot_" + Cell.Value + ".jpg")
Next

bot.Quit

结束子

请对此提供帮助。 我每天像这样花6到7个小时坐在这里,也可以从网站上学习,也可以浏览YouTube视频和电子书。

1 个答案:

答案 0 :(得分:1)

您要循环编码,每个新编码都导航回到起始URL。 (未测试)

Option Explicit

Public Sub NHBsite()

    Dim bot As WebDriver, rng As Range
    Dim ws As Worksheet, cell Ad Range

    Const URL As String = "http://nhb.gov.in/IndexPage.aspx?enc=nRXYbvwNFTF218kodGo9fg=="

    Set bot = New ChromeDriver
    Set ws = ThisWorkbook.Worksheets("Data")
    Set rng = ws.Range(ws.Range("A2"), ws.Range("A2").End(xlDown))

    bot.Window.Maximize

    For Each Cell In rng
        bot.get URL
        bot.FindElementById("ctl00_ContentPlaceHolder1_ctl00_txtProjectCode").SendKeys Cell.Value
        bot.FindElementById("ctl00_ContentPlaceHolder1_ctl00_btnSearchProject").Click
        bot.Wait 1000
        bot.TakeScreenshot.SaveAs (ThisWorkbook.Path + "/Screenshot_" + Cell.Value + ".jpg")
    Next

    bot.Quit

End Sub