Html 通过激活搜索按钮。单击

Html 通过激活搜索按钮。单击,html,excel,vba,web-scraping,getelementsbyclassname,Html,Excel,Vba,Web Scraping,Getelementsbyclassname,我正在使用IE11,HMTL对象库和Internet控件引用处于激活状态 按钮上没有元素ID,但我可以通过添加一些html和xml声明来使用ie.Document.getElementsByClassName 我从Excel中获取姓名和城市、州,并将其插入网站,然后单击搜索按钮 这就是我出错的地方 运行时错误“438”:对象不支持此属性或方法 HTML: VBA: 选项显式 副主席() 'Application.ScreenUpdate=False “我们定义了基本变量 模糊的物体 将我的ur

我正在使用IE11,HMTL对象库和Internet控件引用处于激活状态

按钮上没有元素ID,但我可以通过添加一些html和xml声明来使用
ie.Document.getElementsByClassName

我从Excel中获取姓名和城市、州,并将其插入网站,然后单击搜索按钮

这就是我出错的地方

运行时错误“438”:对象不支持此属性或方法

HTML:

VBA:

选项显式
副主席()
'Application.ScreenUpdate=False
“我们定义了基本变量
模糊的物体
将我的url设置为字符串
Dim搜索按钮、名称框、地址框
作为对象的Dim ele
作为整数的Dim x
Dim y作为整数
Dim IsOdd为整数
Dim html_文档作为对象的HTMLDocument
Dim xml_obj作为对象“MSXML2.DOMDocument”
我的url=”https://www.healthgrades.com/"
'在VBA项目中添加“Microsoft Internet控件”引用
Set ie=新的InternetExplorer
可见=真“假”
即,浏览我的url“13.33.74.92”(“https://www.healthgrades.com/")
而ie.ReadyState 4
多芬特
温德
Set NameBox=ie.Document.getElementById(“搜索词选择器子项”)
NameBox.Value=ActiveSheet.Range(“A2”)
Set AddressBox=ie.Document.getElementById(“搜索位置选择器子项”)
AddressBox.Value=ActiveSheet.Range(“B2”)
设置html_doc=CreateObject(“htmlfile”)
设置xml_obj=CreateObject(“MSXML2.XMLHTTP”)
xml_obj.Open“GET”,my_url,False
xml_obj.send
html_doc.body.innerHTML=xml_obj.responseText
设置按钮控件(HTML控件)的SearchButton=ie.Document.GetElementsByCassName(“autosuggest_submiter”)id
搜索按钮。单击
而ie.ReadyState 4
多芬特
温德

我把你的代码压缩了一点。您确实不需要将每个元素都设置为变量。从长远来看,这只会浪费资源

使用ClassName
submiter\uu text
抓取提交按钮,它的索引为
0

Sub HGScrape()

    Const sURL As String = "https://www.healthgrades.com/"

    Dim ie As New InternetExplorer

    With ie

        .Visible = True
        .Navigate sURL
        While .Busy Or .ReadyState < 4: DoEvents: Wend
        .Document.getElementById("search-term-selector-child"). _
                    Value = ActiveSheet.Range("A2")
        .Document.getElementById("search-location-selector-child"). _
                    Value = ActiveSheet.Range("B2")
        .Document.getElementsByClassName("submiter__text")(0).Click
        While .Busy Or .ReadyState < 4: DoEvents: Wend

    End With

End Sub
Sub-hgsrap()
Const sURL作为字符串=”https://www.healthgrades.com/"
Dim ie成为新的InternetExplorer
与ie
.Visible=True
.导航sURL
当.Busy或.ReadyState<4:DoEvents:Wend时
.Document.getElementById(“搜索词选择器子项”)_
值=ActiveSheet.Range(“A2”)
.Document.getElementById(“搜索位置选择器子项”)_
值=ActiveSheet.Range(“B2”)
.Document.getElementsByClassName(“提交者文本”)(0)。单击
当.Busy或.ReadyState<4:DoEvents:Wend时
以
端接头
“。为什么“提交者\文本”类是正确的?”

最好的解释方式就是向你展示。如果不确定要进行什么选择,请右键单击图元并选择“检查图元”,然后查看高亮显示的线周围


你能试试
ie.document.forms(0).Submit
?你说你引用了MS Internet控件和MS HTML Obj库-但是你仍然将变量声明为type
as Object
?看起来它刚刚刷新了页面好的,我来看看这篇文章使用的是
excel vba
标记,它是通过
excel
vba
实现的。但是,由于它已经达到了五个标签的限制,所以不可能建议在不删除至少一个其他标签的情况下进行编辑…比我拥有的更简单!为什么“submitter_text”类是正确的?通常,您想要的按钮元素不会有任何子元素。这意味着,如果有一个下拉箭头指向您的元素,那么您还不够深入。