0

最初にこれにアクセスしてください:http ://www.sportingpulse.com/comp_info.cgi?c = 1-5917-0-232432-0&a = STATS&sgroup = floor

これは、「これも可能性のあるタイプの質問ですか」ということです。スポーツのウェブサイトからデータを取得するための小さなスクリプトを作成しました。

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";

preg_match_all('#<table[^>]+>[\w\W]*?</table>#i', file_get_contents($url), $match);
$tableone = $match[0][0];
$tabletwo = $match[0][1];

$tableone1 = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $tableone);
echo $tableone1;

これはうまく機能し、すべてのテーブルデータを私のWebサイトに配置しますが、私が疑問に思っていたのは、全員ではなくチームSOLの結果のみを取得できるのでしょうか。

誰かが私を正しい方向に向けることができますか?私が使用すると考えることができる唯一のことは、「SOL」を探して、それからどういうわけかその後ろのtrをつかむことです。

ありがとう

4

3 に答える 3

2

これを試して

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";
$str = file_get_contents($url);
$doc = @DOMDocument::loadHTML($str);
$xpath = new DOMXPath($doc);
$entries = $xpath->query('//html/body/div[@id="site-wrap"]/div[@id="content-wrap"]/div[@id="col-1-2-wrap"]/div[@id="content"]/div[@class="tableContainer"]/div/table/tbody/tr[td[2]/a/text()="SOL"]');
echo '<table>';
foreach($entries as $entry) {
  echo($doc->saveXML($entry));
}
echo '</table>';
于 2012-11-12T15:28:59.633 に答える
1

申し訳ありませんが、これ以上完成させることはできませんでしたが、飛行機に乗ろうとしています。これを開始してみてください:

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";
$html = file_get_contents($url);
$doc = DOMDocument::loadHTML($html);

$xpath = new DOMXPath($doc);

$query = "/your/xpath/query/here";

$entries = $xpath->query($query);

xpathクエリの詳細については、このリンクを確認してください。 http://php.net/manual/en/domxpath.query.php そしてもう1つのすばらしいリファレンス:http ://www.w3schools.com/xpath/xpath_syntax.asp

着陸後、もう一度確認して詳細を追加します。

于 2012-11-12T15:04:30.667 に答える
0

私はそのようなことのためにhttp://simplehtmldom.sourceforge.net/を使用します。次に、そのテーブル内のすべてのtrを反復処理し、2番目のtd(この場合)のリンクが==SOLであるかどうかを確認できます。もしそうなら、あなたは次のtdsからデータを読むことができます。これについては、 http://simplehtmldom.sourceforge.net/manual.htmを参照してください。さらにサポートが必要な場合は、コードサンプルを提供できます。

よろしくステファンS。

于 2012-11-12T15:04:22.683 に答える