1

介绍

主要问题是下降,但我想在这种情况下有一些背景会有所帮助

好的,所以我想首先说这实际上是我在 stackoverflow 上的第一个问题——我已经使用这个网站很多年了,我基本上从中学到了关于编码的所有知识,但这也意味着我有很大的差距据我所知——选择我使用的很多方法只是因为它们是我所知道的唯一方法——如果您对如何改进下面描述的过程有任何建议,请随时与我分享。如果我的请求有任何不清楚的地方,我也想提前道歉,我会在任何这种情况下尝试详细说明。

方法

我正在尝试抓取个人球员在欧洲冠军联赛比赛中的表现(我实际上正在构建一个 Fantasy Football 应用程序,我认为这个项目我将来也会有很多问题)。我的来源是欧足联统计网站,例如“ http://www.uefa.com/uefachampionsleague/season=2016/matches/live/index.html?day=2&session=1&match=2015684 ”。在那里,大约在中间,您可以选择“球员”统计数据,并看到一个“表格”(实际上它是一个带有列表的 div),其中(默认情况下)显示有关给定(单个)比赛的统计数据。当在 HTML 中完全加载时,有两个 div,一个用于匹配统计数据,一个用于整体,列表的某些元素是隐藏的(例如基于玩家的位置),但所有元素都在那里。我的部分

<div id="matchTab" class="tab-panel rounded-down scrollable ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-7" role="tabpanel" aria-expanded="true" aria-hidden="false">
<div class="tab-content">
<div class="col-stats">
<ul class="goals-table stats">
<li style="display: list-item;">
Goals scored
<span class="value goals-scored">1</span>
</li>
<li style="display: none;">
<li class="bg-highlight" style="display: none;">
<li style="display: none;">
<li class="bg-highlight" style="display: none;">
</ul>
<ul class="attempts-table stats" style="display: block;">
<ul class="passes-attempt-table stats">
<ul class="fouls-table fouls-table-gk stats">
</div>
<div class="col-stats">
</div>
</div>

(大部分代码被折叠)

现在我在 VBA 中使用 WinHTTPRequest,希望用数据填充 Excel 范围,但最后我会将项目移动到 VB.NET 并使用 SQL。问题是我似乎无法获得列表中显示的日期。使用:

whReq.Open "GET", "http://www.uefa.com/uefachampionsleague/season=2016/matches/live/index.html?day=2&session=1&match=2015684"

仅返回侧的主要结构,而不是“表”中的数据。因此,我使用 FireBug,然后使用 WireShark 来检查当玩家在选择中更改时正在传输的数据。一个数据包是关于球员、他的年龄、姓名等的一般统计数据——没用。第二个看起来像这样:

GET /livecommon/match-centre/cup=1/season=2016/round=2000634/player=103697/overall.json?v=1448115572662

(“v”参数实际上是无用的,没有它的工作方式相同)实际上确实返回了一堆数据。显然它是 JSON 的形式,并且看起来像这样:

{"Players":null,"OverallStat":{"250021048":{"PlayerId":250021048,"TeamId":0,"MatchesPlayed":3,"MinutesPlayed":188,"GoalsScored":0,"GoalsConceded":0,"GoalsByMinute":0,"GoalsByAttempts":0,"TotalAttempts":2,"Assist":0,"Saves":0,"SavesOnAttempts":0,"SavesByMinutes":0,"FoulsCommitted":3,"FoulsCommittedByMinute":63,"FoulsSuffered":0,"FoulsSufferedByMinute":0,"FoulsPenalty":0,"FoulsSuffPenalty":0,"YellowCard":0,"RedCard":0,"Passes":149,"PassingDistribution":0,"PassesCompleted":68,"PassesAttempted":81,"PassingAccuracy":84,"Delivery":0,"Run":2,"AttempsOn":0,"AttempsOff":2,"Offside":1,"ShotHittingPost":0,"HittingBar":0,"ShotBlocked":2,"Corners":0,"Attacks":0,"BigChance":0,"BallPossession":0,"DistanceCovered":18655,"ClearancesAttempted":4,"ClearancesCompleted":3,"Blocked":0,"TackleCompleted":0,"TackleWrong":0}},"LastUpdatedCET":"05 November 2015, 11:47 CET","LastUpdateDay":5,"LastUpdateMonth":11,"LastUpdateYear":2015,"LastUpdateHour":11,"LastUpdateMinute":47}

这就是无论何时更换球员时都会获得的那种响应,无论是选择单场比赛统计数据还是整体数据(当然不必实际在网站上,不需要cookie,只需“ http:/ /www.uefa.com/livecommon/match-centre/cup=1​​/season=2016/round=2000634/player=250021048/overall.json “你有统计数据)问题是,这些是总体统计数据。我可以理解有某种代码可以计算个人比赛的统计数据(我实际上可以自己做,只需在每次比赛后刷新数据以计算个人比赛的统计数据)。尽管如此,他们往往会不定期地更新统计数据,所以我真的更希望能够从个人比赛中检索统计数据。所以:

问题

鉴于上述情况,有没有办法在另一个 GET 之后使用 WinHTTPRequest获取网站的 html 以获取玩家统计信息?如果没有,最好的方法是什么?我确实尝试使用 InternetExplorer 对象,但根本无法产生任何结果(实际上我在工作中遇到了同样的问题,我需要访问我们公司的站点 - 我什至无法检查 readystate,在站点的工作中,但是我想这是另一个问题的主题)

提前谢谢,如果我写的东西不清楚,再次抱歉。

4

0 回答 0