Excel VBA:无法在网站上执行自动搜索

时间:2018-09-09 04:33:04

标签: excel vba web-scraping ex

最近,我正在学习使用excel宏在网站上进行搜索。我已经阅读了几个论坛主题,并想出了下面的代码。但是,当我到达该行时会出现错误

SearchBox(0).Value = SearchString

我试图删除(0),但同样出现了另一个错误。我现在很沮丧,想寻求您的专业建议。该代码在其他网站上也能正常工作。我应该如何更改它们以适应此站点?非常感谢!

P.S。我也想知道单击搜索按钮的方式。谢谢!

Sub Searchstockcode()

Dim SearchString As String

SearchString = "700"

Set ie = CreateObject("InternetExplorer.Application")
With ie

ie.Visible = True
End With

ie.Navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"

While ie.ReadyState <> 4

DoEvents

Wend


Dim SearchBox As Object

Set SearchBox = ie.Document.GetElementsByName("ct100$txt_stock_code")

SearchBox(0).Value = SearchString


Dim SearchButton As Object

Set SearchButton = ie.Document.GetElementsByName


End Sub

关于, LLC

1 个答案:

答案 0 :(得分:0)

我不知道您的名称选择是否是由于元素具有两个名称属性而引起的,但这似乎是可能的。

您可以使用以下内容。

对于搜索框,我使用其ID定位该元素。通常这在文档和最快的选择器方法上都是唯一的。

对于搜索按钮,我使用

的CSS属性+值选择器
[src*='/image/search.gif']

这将根据元素的值src的属性[]对其进行定位。 *表示包含。选择器会寻找一个src属性,其值中包含/image/search.gif

您可以在此处观察属性:

enter image description here

Option Explicit
Sub Searchstockcode()

    Dim SearchString As String, SearchBox As Object, SearchButton As Object, ie As Object

    SearchString = "700"

    Set ie = CreateObject("InternetExplorer.Application")

    ie.Visible = True

    ie.navigate "http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.aspx"

    While ie.Busy Or ie.readyState < 4: DoEvents: Wend

    Set SearchBox = ie.document.getElementById("ctl00_txt_stock_code")
    SearchBox.Value = SearchString

    Set SearchButton = ie.document.querySelector("[src*='/image/search.gif']")
    SearchButton.Click

    While ie.Busy Or ie.readyState < 4: DoEvents: Wend

    Stop '<==Delete me
    'other code
    ie.Quit
End Sub