1

序章

主な質問はかなり下にありますが、この場合の背景を知っておくと役立つと思います

わかりましたので、これは実際にはスタックオーバーフローに関する最初の質問であると言うことから始めたいと思います-私はこのサイトを何年も使用しており、基本的にコーディングについて知っていることはすべてそこから学びましたが、それはまた、私には大きなギャップがあることを意味します私の知る限り、私が使用する方法の多くは、私が知っている唯一の方法であるという理由だけで選択されています.以下に説明するプロセスを改善する方法について何か提案があれば、遠慮なく私と共有してください. また、私のリクエストが不明確な場合は事前にお詫びしたいと思います。そのような場合は詳しく説明します。

方法

UEFA チャンピオンズ リーグの試合での個々のプレーヤーのパフォーマンスをクロールしようとしています (実際には、ファンタジー フットボール アプリを作成しています。このプロジェクトについては、将来も多くの質問があると思います)。私の情報源は UEFA の統計サイトです。そこでは、「PLAYER」統計を選択でき、「テーブル」(実際にはリストを含む div です)が表示され、(デフォルトでは)特定の(単一の)試合に関する統計が表示されます。HTML に完全に読み込まれると、2 つの div があり、1 つは試合の統計用、もう 1 つは全体用です。リストの一部の要素は非表示になっています (たとえば、プレーヤーの位置に基づいて) が、すべてがそこにあります。私がいる部分

<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 を使用して、選択したプレーヤーが変更されたときに転送されるデータを調べました。1 つのパケットは、プレーヤー、年齢、名前などに関する一般的な統計情報です。役に立ちません。2 つ目は次のようになります。

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 "そしてそこに統計があります)問題は、それらは全体的な統計です. 個々の試合の統計を計算するある種のコードがあることを理解できました(実際には自分でそれを行うことができます。各試合の後にデータを更新して、個々の試合の統計を計算します)。それにもかかわらず、彼らは統計を不定期に更新する傾向があるので、個々の試合から統計を取得できることを本当に望んでいます. そう:

質問

上記を考えると、 WinHTTPRequest を使用して、プレーヤーの統計情報を取得した後にサイトの html を取得する方法はありますか? そうでない場合、最善の方法は何でしょうか? InternetExplorer オブジェクトを操作してみましたが、まったく結果を出すことができませんでした (実際には、会社のサイトにアクセスする必要がある仕事で同じ問題がありました。別の質問のトピックだと思います)

事前に感謝します。また、私が書いたことが不明確である場合は申し訳ありません.

4

0 に答える 0