2015-01-02 1 views
0

Я ищу для автоматизации интернет-исследователя с помощью Excel VBA для извлечения результатов футбола с веб-сайта и действительно борюсь с получением данных для обновления при изменении значения выпадающего списка.VBA для изменения раскрывающегося списка в internet explorer

Сайт: http://www.whoscored.com/Regions/250/Tournaments/30/Seasons/3871/Stages/8209/Fixtures/Europe-UEFA-Europa-League-2013-2014

Я ищу, чтобы изменить значение в раскрывающемся списке «Этапы» и скрести результаты матча.

Мой код отлично работает для открытия IE, меняя значение раскрывающегося списка «scrape», но я не могу получить данные для обновления. Хотя мне нравится VBA, я очень мало знаю о HTML и Javascript, хотя могу догадаться, что делают некоторые строки. Из того, что я вижу, есть код javascript, который обрабатывает событие изменения, я просто не могу понять, как его запустить - я попытался запустить событие «onchange» в своем коде, как это было предложено в моих поисках, но я не могу заставить его работать.

Это код, который я могу видеть, что контролирует падение вниз (я удалил много значений выпадающих для других выпадающих, как он сделал этот пост еще больше:

<div id="breadcrumb-nav"> 
. 
. 
<span><select id="stages" name="stages"><option selected="selected"  value="/Regions/250/Tournaments/30/Seasons/3871/Stages/8209">Europa League Group Stages</option> 
<option value="/Regions/250/Tournaments/30/Seasons/3871/Stages/7816">Europa League Qualification</option> 
<option value="/Regions/250/Tournaments/30/Seasons/3871/Stages/8158">Europa League Grp. A</option> 
<option value="/Regions/250/Tournaments/30/Seasons/3871/Stages/8159">Europa League Grp. B</option> 
. 
. 
<option value="/Regions/250/Tournaments/30/Seasons/3871/Stages/8466">Europa League</option> 
</select></span> 


</div> 


<script type="text/javascript"> 

$('#breadcrumb-nav select').change(function() { 
NG.GA.trackEvent('BreadcrumbNav', this.id); 
window.location.href = this.value; 
// TODO: Disable all selects? 
}); 

</script> 

моего код:

Sub ScrapeData() 
Dim ie As InternetExplorer 
Dim URL As String 

URL = "http://www.whoscored.com/Regions/250/Tournaments/30/Seasons/3871/Stages/8466/Fixtures/Europe-UEFA-Europa-League-2013-2014" 

Set ie = New InternetExplorer 
ie.Visible = True 
ie.navigate (URL) 

Do 
    DoEvents 
Loop Until ie.readyState = 4 

SelectValue ie, "/Regions/250/Tournaments/30/Seasons/3871/Stages/7816" 
SelectValue ie, "/Regions/250/Tournaments/30/Seasons/3871/Stages/8209" 

End Sub 

Sub SelectValue(ByVal ie As InternetExplorer, ByVal value As String) 
Dim htmlDoc As HTMLDocument 
Dim ddStages As HTMLSelectElement 
Dim idBreadCrumb As Object 

Set htmlDoc = ie.document 

With ie.document 
    Set idBreadCrumb = .getelementbyid("breadcrumb-nav") 
    Set ddStages = .getelementbyid("stages") 
End With 

ddStages.value = value 
ddStages.FireEvent ("onchange") 
'fireevent on ddStages didn't work so tried here too 
idBreadCrumb.FireEvent ("onchange") 

Do 
    DoEvents 
Loop Until ie.readyState = 4 

End Sub 

Любая помощь будет очень ценна.

ответ

0

Там должен быть какой-то JavaScript выполняет на событие «ВЫБРАТЬ элемент изменил свое значение». Мое предложение, намного проще, чем execut JavaScript - это просто перемещение по ссылке (потому что JS здесь просто меняет HTML-страницу, которую вы видите, а не элементы на той же веб-странице).

Так, к примеру, я бы просто заменить это:

SelectValue ie, "/Regions/250/Tournaments/30/Seasons/3871/Stages/7816" 

с этим

ie.Navigate "http://www.whoscored.com/" & "/Regions/250/Tournaments/30/Seasons/3871/Stages/7816" 

, чтобы получить точно такой же результат.

+0

спасибо за ваше предложение, так очевидно. Поскольку я ищу, чтобы изучить веб-скребок, вы знаете, как достичь этого, выполнив javascript? – Ash

+0

@Ash не забывайте поднимать, если полезно, отметьте, если работает;) –

+0

@ Аш это еще одна история. JavaScript - это код, интерпретируемый браузером, вы не можете сделать это из VBA. Или лучше, вы _might_ делаете это через VBA, но это не достойно, в общем. Во всяком случае, JavaScript используется для изменения HTML-файлов, но у VBA уже есть библиотеки, которые включают функции JS. Вы можете начать с [здесь] (http://ramblings.mcpher.com/Home/excelquirks/snippets/scriptcontrol), но опять же для цели, которую вы преследуете, я бы сказал, что это не достойно. –

 Смежные вопросы

  • Нет связанных вопросов^_^