Ответ 1
Есть два метода, которые я использую для "VBA". Я опишу их один на один.
1) Использование FireFox/Firebug Addon/Fiddler
2) Использование встроенного средства Excel для получения данных из Интернета
Поскольку этот пост будет прочитан многими, я даже рассмотрю очевидное. Пожалуйста, не стесняйтесь пропустить любую часть, которую вы знаете.
1) Использование FireFox/Firebug Addon/Fiddler
FireFox: http://en.wikipedia.org/wiki/Firefox Бесплатно скачать (http://www.mozilla.org/en-US/firefox/new/)
Firebug Addon: http://en.wikipedia.org/wiki/Firebug_%28software%29 Бесплатно скачать (https://addons.mozilla.org/en-US/firefox/addon/firebug/)
Fiddler: http://en.wikipedia.org/wiki/Fiddler_%28software%29 Бесплатно скачать (http://www.fiddler2.com/fiddler2/)
Как только вы установили Firefox, установите Firebug Addon. Firebug Addon позволяет вам проверять различные элементы веб-страницы. Например, если вы хотите узнать имя кнопки, просто щелкните по нему правой кнопкой мыши и нажмите "Осмотреть элемент с помощью Firebug", и он предоставит вам все детали, которые вам понадобятся для этой кнопки.
Другим примером может быть поиск имени таблицы на веб-сайте с данными, которые вам нужно удалить.
Я использую Fiddler только тогда, когда использую XMLHTTP. Это помогает мне увидеть точную информацию, которая будет передана, когда вы нажмете на кнопку. Из-за увеличения количества BOTS, которые царапают сайты, большинство сайтов сейчас, чтобы предотвратить автоматический отказ, захватить ваши координаты мыши и передать эту информацию, а скрипач действительно поможет вам отладить эту информацию, которая передается. Я не буду вдаваться в подробности здесь, так как эта информация может быть использована злонамеренно.
Теперь давайте рассмотрим простой пример того, как очистить URL-адрес, опубликованный в вашем вопросе
http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html
Сначала найдите имя таблицы, в которой есть эта информация. Просто щелкните правой кнопкой мыши по таблице и нажмите "Осмотреть элемент с помощью Firebug", и он даст вам снимок.
Итак, теперь мы знаем, что наши данные хранятся в таблице под названием "inningsBat1". Если мы можем извлечь содержимое этой таблицы в файл Excel, мы можем определенно работать с данными для нашего анализа. Вот пример кода, который сбрасывает эту таблицу в Sheet1
Прежде чем продолжить, я бы рекомендовал закрыть все Excel и начать новый экземпляр.
Запустите VBA и вставьте Userform. Поместите командную кнопку и элемент управления веб-браузером. Ваша Userform может выглядеть так:
Вставьте этот код в область кода пользователя
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
Теперь запустите Userform и нажмите кнопку Command. Вы заметите, что данные сбрасываются в Sheet1. См. Снимок
Аналогичным образом вы можете очистить и другую информацию.
2) Использование встроенного средства Excel для получения данных из Интернета
Я считаю, что вы используете Excel 2007, поэтому я возьму это в качестве примера, чтобы очистить вышеупомянутую ссылку.
Перейдите к Sheet2. Теперь перейдите на вкладку "Данные" и нажмите кнопку "Из Интернета" в крайнем правом углу. См. Снимок.
Введите URL-адрес в окне "New Web Query Window" и нажмите "Go"
После загрузки страницы выберите соответствующую таблицу, которую вы хотите импортировать, нажав на маленькую стрелку, как показано в снимке. После этого нажмите "Импорт"
Затем 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
Надеюсь, это поможет. Дайте мне знать, если у вас все еще есть вопросы.
Сид