Web抓取 - 为IE创建对象

时间:2016-08-24 01:25:48

标签: vba excel-vba web-scraping excel

Sub Get_Data()


Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "http://www.scramble.nl/military-database/usaf"
Do While ie.Busy
    Application.Wait DateAdd("s", 1, Now)
Loop
SendKeys "03-3114"
SendKeys "{ENTER}"


End Sub

下面的代码搜索键盘输入值 03-3114 并获取表格中的数据。如果我想搜索已经在单元格A1中的值并从表格中刮取值,那么代码,类型,CN,单位"在细胞范围内(" B1:E1")我该怎么办?

1 个答案:

答案 0 :(得分:0)

您使用的SendKeys非常不可靠:)为什么不找到文本框的名称和搜索按钮并直接与它进行交互,如下所示?

Sub Get_Data()
    Dim ie As Object, objInputs As Object

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "http://www.scramble.nl/military-database/usaf"

    Do While ie.readystate <> 4: DoEvents: Loop

    '~~> Get the ID of the textbox where you want to output
    ie.Document.getElementById("serial").Value = "03-3114"

    '~~> Here we try to identify the search button and click it
    Set objInputs = ie.Document.getElementsByTagName("input")
    For Each ele In objInputs
        If ele.Name Like "sbm" Then
            ele.Click
            Exit For
        End If
    Next
End Sub

注意:要了解我如何获得名称serialsbm,请参阅下图中给出的说明。

  

下面的代码搜索键盘输入值03-3114并获取表格中的数据。如果我想搜索已经在单元格A1中的值并从表格中刮取值,那么代码,类型,CN,单位&#34;在细胞范围内(&#34; B1:E1&#34;)我该怎么办?

直接将A1的值替换为硬编码值

ie.Document.getElementById("serial").Value = Sheets("Sheet1").Range("A1").Value

要从表格中获取值,请在浏览器中右键单击表格中的元素,然后点击&#34;检查/检查元素(在Chrome中只是Inspect )&#34;如下所示。

enter image description here

我可以给你代码,但我希望你自己做。如果您仍然卡住,请使用您尝试的代码更新问题,然后我们将从那里开始。

有趣的阅读html parsing of cricinfo scorecards