我已經編寫了一個代碼,用於通過谷歌使用vba解析來自多個網站的數據。無論搜索是什麼,它都可以刮掉標籤元素[「h3」和「a」]。但是,如果我所期望的是可能的,我想解析任何搜索的名稱或電話號碼。先謝謝您的幫助。使用vba從多個網站刮取數據
Sub GoogleSearch()
Dim http As New MSXML2.XMLHTTP60, html As New HTMLDocument, hmm As New HTMLDocument
Dim topics As Object, post As Object, link As Object, posts As Object
Dim url As String, z As String
Dim i As Long, LRow As Long
LRow = Range("A" & Rows.Count).End(xlUp).Row
For i = 3 To LRow
url = "https://www.google.co.in/search?q=" & Cells(i, 1)
http.Open "GET", url, False
http.setRequestHeader "Content-Type", "text/xml"
http.send
html.body.innerHTML = http.responseText
Set topics = html.getElementById("rso")
Set post = topics.getElementsByTagName("H3")(0)
Set link = post.getElementsByTagName("a")(0)
Cells(i, 2) = link.innerText
Cells(i, 3) = link.href
z = link.href
http.Open "GET", z, False
http.send
hmm.body.innerHTML = http.responseText
Set posts = hmm.getElementsByClassName("phone")
If Not posts(0) Is Nothing Then
Cells(i, 4) = posts(0).innerText
Else
Cells(i, 4).Value = "Phone Not Found"
End If
Next i
End Sub
感謝大衛先生您的明確答案。在我看到您的答案之前,我一直在一次調用中獲取所需的任何信息,我感到非常困惑。在不同的網站,我注意到有人要求我在這裏做同樣的問題。在這一點上,我可以理解深入挖掘的基礎知識,但我很想知道,如果我通過for循環驅動一個錯誤處理程序,我可以在單個子例程中調用至多五到十個站點,或者調用那麼關於列表包含100個或更多搜索。再次感謝主席先生。 – SIM
我用一個簡單的處理程序做了一個小修改,該處理程序將無誤地運行,並且應該標識沒有找到「手機」類的URL。希望這可以幫助你:) –
謝謝先生,你的友善接觸我的雜亂的代碼。也許,你是這麼寫的,這就是爲什麼一些微不足道的錯誤出現在那裏的原因。不過,我已經改正了它。 – SIM