VBA问题:单击另一页后无法获取html元素

时间:2018-12-16 16:18:46

标签: excel vba web-scraping

我希望创建一个宏,该宏可以自动登录页面,然后自动填充搜索输入字段,最后通过网络抓取搜索结果。

我已经努力了很长时间才能成功登录该页面。但是,当我单击登录按钮时,我无法进一步获取搜索字段的输入标签,也无法将值添加到该输入字段。这些输入标签的索引绝对正确。

下面是我的vba脚本,非常感谢!

Sub login_and_search()

Set ie = CreateObject("InternetExplorer.Application")

With ie
    .Visible = True
    .Navigate "http://loginpage.html"

    Do While .Busy Or _
    .readyState <> 4
    DoEvents
    Loop

    Set inputElement = .document.getELementsByTagName("input")
    inputElement.Item(0).Value = "abc" 'username
    inputElement.Item(1).Value = "xyz" 'password
    inputElement.Item(2).Click

    Do While ie.Busy Or _
    .readyState <> 4
    DoEvents
    Loop

    Set searchField = .document.getELementsByTagName("input")
    searchField.Item(0).Value = "searchitems" 'search field
    searchField.Item(1).Click

End With

End Sub

下面是2个html文件,对于过于简化的html文件感到抱歉,因为我大致将它们制作为仅用于测试vba脚本。第一个是登录页面,第二个是登录后的页面。

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <form class="" action="search.html" method="post">
    <input type="text" name="" value="">
    <input type="password" name="" value="">
    <input type="submit" name="" value="login">
  </form>
</body>

</html>

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <form class="" action="searchResults.html" method="post">
    <input type="text" name="" value="">
    <input type="submit" name="" value="Search">
  </form>
</body>

</html>

运行宏时没有错误显示,我认为这是逻辑错误而不是语法错误。

再次感谢大家!

0 个答案:

没有答案