したがって、ドロップダウンからゲームの週を選択すると(または、ドロップダウンの上にある[前方]または[プロキシ]リンクをクリックすると)、ページのJavaScriptがサーバーを呼び出して、選択したゲームの週のデータを取得します。GETを介してサーバーにURLを送信するだけです。
データはJSONオブジェクトの形式で返され、このオブジェクトの中にはテーブルHTMLがあります。このHTMLはDOMの適切な場所に読み込まれ、ブラウザにその週のデータが表示されます。
これをプログラムで取得するのは少し手間がかかりますが、実行することはできます。あなたができることは、毎週のURLが何であるかを決定することです。うまくいけば、問題の週を除いて、ほとんどのクエリ文字列は一定です。したがって、必要な週に微調整する定型URLを作成し、それをサーバーに送信します。JSONを取得し、テーブルHTMLを解析します。次に、あなたは黄金になります。そのHTMLをAgility Packにフィードして、通常どおりに操作するだけです。
少し調べてみたところ、Chromeのデベロッパーツールを使用して、[ネットワーク]タブで、ゲームウィークを選択すると、サーバーに送信されるURLが次のようになっていることがわかりました(これは14週目です)。
http://br.soccerway.com/a/block_competition_matches_summary?block_id=page_competition_1_block_competition_matches_summary_6&callback_params=%7B%22page%22%3A%229%22%2C%22round_id%22%3A%2217449%22%2C%22out %22%22%2C%22view%22%3A%221%22%7D&action = changePage&params =%7B%22page%22%3A13%7D
(FireFoxのFirebugやFiddlerなどの他のツールを使用してURLを取得することもできることに注意してください)。
他の週を試して比較すると、(選択された週-1)がparamsクエリ文字列 "...%3A13..."の終わり近くにあるように見えます。したがって、15週目は、「...%3A14...」を使用します。幸い、異なる週のURL間には、もう1つだけ違いがあるように見えます。これは、callback_paramsクエリ文字列にあります。残念ながら、選択した週にどのように接続するかを理解できませんでしたが、うまくいけば可能です。
したがって、そのURLをブラウザにフィードすると、JSONブロックが返されます。「<table」と「/table>」を検索すると、必要なHTMLが表示されます。C#コードでは、単純な正規表現を使用して、JSON文字列から解析することができます。
string json = "..." // load the JSON string here
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Singleline;
Regex regx = new Regex( "(?<theTable><table.*/table>)", options );
Match match = regx.Match( json );
if ( match.Success ) {
string tableHtml = match.Groups["theTable"].Value;
}
HTML文字列をAgilityPackにフィードすると、準備が整います。