Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA更改internet explorer中的下拉列表值_Vba_Automation_Scrape - Fatal编程技术网

VBA更改internet explorer中的下拉列表值

VBA更改internet explorer中的下拉列表值,vba,automation,scrape,Vba,Automation,Scrape,我正在寻找使用Excel VBA自动化internet explorer以从网站中提取足球比赛结果,并且在更改下拉列表值时很难更新数据 网址为: 我希望更改“阶段”下拉列表的值,并删除比赛结果 我的代码可以很好地打开IE,更改“scrape”下拉列表的值,但我无法更新数据。虽然我对VBA很熟悉,但我对HTML和Javascript知之甚少,尽管我能猜出一些行在做什么。从我所看到的javascript代码中,有处理更改事件的代码,我就是看不到如何让它运行——我已经尝试按照搜索的建议在代码中触发“o

我正在寻找使用Excel VBA自动化internet explorer以从网站中提取足球比赛结果,并且在更改下拉列表值时很难更新数据

网址为:

我希望更改“阶段”下拉列表的值,并删除比赛结果

我的代码可以很好地打开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>

任何帮助都将不胜感激。

在事件“select元素已更改其值”上必须有一些JavaScript执行。我的建议比执行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"

获得完全相同的结果。

谢谢你的建议,这真的很明显。因为我想学习网页抓取,你知道如何通过执行javascript来实现这一点吗?@Ash如果有用,不要忘了向上投票,如果有效,请标记;)@Ash这是另一个故事。JavaScript是一个由浏览器解释的代码,您不能从VBA执行此操作。或者更好,您可以通过VBA执行此操作,但总体而言,这是不值得的。无论如何,JavaScript用于修改HTML文件,但VBA已经有包含JS函数的库。您可以从开始,但同样是为了实现您的目标我会说这不值得。
ie.Navigate "http://www.whoscored.com/" & "/Regions/250/Tournaments/30/Seasons/3871/Stages/7816"