【发布时间】:2019-09-04 01:18:26
【问题描述】:
我使用该代码自动从网站获取一些字段并用搜索结果填充 excel 表,但我认为网站上发生了一些变化,我无法让该代码再次工作...有什么帮助和建议吗?
Sub Scramble_NAVY_search()
Dim cel As Range, ms As Worksheet, dom As HTMLDocument
Set ms = Sheets("Scramble")
'Const searchUrl = "http://www.scramble.nl/index.php?option=com_mildb&view=search"
For Each cel In ms.Range("B2:B" & ms.Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(2)
Set dom = New HTMLDocument
Application.ScreenUpdating = False
With CreateObject("winhttp.winhttprequest.5.1")
.Open "POST", searchUrl, False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.send "Itemid=60&af=usn&serial=" & cel & "&sbm=Search&code=&searchtype=&unit=&cn="
dom.body.innerHTML = .responseText
End With
On Error Resume Next
With cel
If .Offset(, -1).Value = "" Then
.Offset(, 2) = dom.getElementsByClassName("rowBord")(0).Cells(1).innerText 'Code
.Offset(, -1) = dom.getElementsByClassName("rowBord")(0).Cells(2).innerText 'Type
.Offset(, 10) = dom.getElementsByClassName("rowBord")(0).Cells(3).innerText 'C/N
.Offset(, 3) = dom.getElementsByClassName("rowBord")(0).Cells(4).innerText 'Unit
.Offset(, 11) = dom.getElementsByClassName("rowBord")(0).Cells(5).innerText 'Status
End If
End With
Next
End Sub
【问题讨论】:
-
使用
F8单步执行代码,看看哪一行出现错误。您提供了一些代码,但未指定您期望的输出(或您希望从网站获取的数据)。如果我在浏览器中导航到https://www.scramble.nl/?option=com_mildb&view=search&Itemid=60&af=usn&serial=&sbm=Search&code=&searchtype=&unit=&cn=,我会看到一堆搜索字段(但在页面的 HTML 或 CSS 中没有名为rowBord的类)。 -
我怀疑你故意注释掉了 searchUrl 声明,对吧?因为它绝对不会那样工作..
-
注释掉的行是我的粘贴错误,我在发布问题之前尝试了不同的选项....
标签: excel vba web-scraping xmlhttprequest fetch