我有2種技術用於「VBA」。我會一一介紹他們。
1)使用Firefox/Firebug的附加組件/提琴手
2)使用Excel的內置工具從網上
獲取數據由於這篇文章會被很多人讀,所以我甚至將覆蓋明顯。請隨時跳過你知道什麼部分
1)使用Firefox/Firebug的附加組件/提琴手
火狐:http://en.wikipedia.org/wiki/Firefox 免費下載(http://www.mozilla.org/en-US/firefox/new/)
Firebug的附加組件: http://en.wikipedia.org/wiki/Firebug_%28software%29 免費下載(https://addons.mozilla.org/en-US/firefox/addon/firebug/)
提琴手:http://en.wikipedia.org/wiki/Fiddler_%28software%29 免費下載(http://www.fiddler2.com/fiddler2/)
一旦你已經安裝了Firefox,安裝Firebug的附加組件。 Firebug Addon讓你檢查網頁中的不同元素。例如,如果您想知道按鈕的名稱,只需右鍵單擊它並單擊「使用Firebug檢查元素」,它會爲您提供該按鈕所需的所有詳細信息。
另一個例子是一個網站,有你需要報廢的數據上找到一個表的名稱。
我只在使用XMLHTTP時才使用Fiddler。它可以幫助我查看點擊按鈕時傳遞的確切信息。由於刮擦站點的BOTS數量增加,現在大多數站點爲了防止自動報廢,捕獲鼠標座標並傳遞該信息,小提琴手實際上可以幫助您調試正在傳遞的信息。我不會在這裏詳細介紹它,因爲這些信息可以被惡意使用。
現在,讓我們對如何刮網址張貼在你的問題
http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html
首先,讓我們發現其具有信息表的名字一個簡單的例子。只需右鍵單擊表格並點擊「用Firebug檢查元素」,它會給你下面的快照。
所以,現在我們知道,我們的數據存儲在一個名爲「inningsBat1」如果我們能提取出表的內容到Excel文件,然後我們就可以肯定是與數據合作,盡我們的分析表。這裏是示例代碼,它將轉儲Sheet1中的表格
在我們繼續之前,我會建議關閉所有Excel並啓動一個新實例。
啓動VBA並插入一個用戶窗體。放置一個命令按鈕和一個webcrowser控件。您的用戶窗體可能是這樣的
粘貼用戶窗體代碼區
Option Explicit
'~~> Set Reference to Microsoft HTML Object Library
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim URL As String
Dim oSheet As Worksheet
Set oSheet = Sheets("Sheet1")
URL = "http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html"
PopulateDataSheets oSheet, URL
MsgBox "Data Scrapped. Please check " & oSheet.Name
End Sub
Public Sub PopulateDataSheets(wsk As Worksheet, URL As String)
Dim tbl As HTMLTable
Dim tr As HTMLTableRow
Dim insertRow As Long, Row As Long, col As Long
On Error GoTo whoa
WebBrowser1.navigate URL
WaitForWBReady
Set tbl = WebBrowser1.Document.getElementById("inningsBat1")
With wsk
.Cells.Clear
insertRow = 0
For Row = 0 To tbl.Rows.Length - 1
Set tr = tbl.Rows(Row)
If Trim(tr.innerText) <> "" Then
If tr.Cells.Length > 2 Then
If tr.Cells(1).innerText <> "Total" Then
insertRow = insertRow + 1
For col = 0 To tr.Cells.Length - 1
.Cells(insertRow, col + 1) = tr.Cells(col).innerText
Next
End If
End If
End If
Next
End With
whoa:
Unload Me
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While Timer < nSec
DoEvents
Sleep 100
Wend
End Sub
Private Sub WaitForWBReady()
Wait 1
While WebBrowser1.ReadyState <> 4
Wait 3
Wend
End Sub
這個代碼現在運行您的用戶窗體,然後單擊命令按鈕。您會注意到數據被轉儲到Sheet1中。見快照
同樣可以刮掉其他信息,以及。
2)使用Excel的內置工具從網上
我相信你正在使用Excel 2007中,所以我將它作爲例子來颳去上面提到的鏈接中獲取數據。
導航到Sheet2。現在導航到「數據」選項卡,然後單擊最右側的「從網站」按鈕。見快照。
在「新建Web查詢窗口」輸入URL,然後單擊「轉到」
一旦頁面上傳,選擇您想通過點擊小導入相關的表箭頭如快照中所示。完成後,點擊「導入」
Excel稍後會問你要導入的數據。選擇相關單元格,然後單擊確定。你完成了!數據將被導入到您指定的單元格中。
如果你願意,你可以錄製宏並自動執行此,以及:)
這裏是我記錄的宏。
Sub Macro1()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html" _
, Destination:=Range("$A$1"))
.Name = "524915"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = """inningsBat1"""
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
希望這有助於。如果您仍然有疑問,請告訴我。
希德
只是一個簡單的查詢,我以爲爬行的Cricinfo是非法的! – 2016-11-01 15:42:10