2011-12-21 7 views
1

現在、World of Warcraftのゲームのビデオゲームグループであるクライアントのためにいくつかの仕事をしています。HTMLデータスクレイピング(私だと思います)

彼らは自分のウェブサイトで現在の評価を表示したい。

評価はhereです。

「Oceanic」の番号と「US」の番号がウェブサイトに表示されます。

私は、ウェブサイト上でそれらの番号が自動的に更新されるようにする方法は誰にでも分かりますか?

ありがとうございます!

+0

PHPなどのサーバーサイドスクリプトにアクセスできますか? – FakeRainBrigand

+0

ええと、私はすべてのファイル/データベースなどにアクセスしています。 –

+0

ドメイン間でリクエストを送信する必要があるため、jQueryでこれを行うことはできません。 PHPやサーバサイドの言語が必要です。 – Blender

答えて

2

このスニペットを使用してデータをスクラップすることができます.PNPはWordPressを実行しているので大丈夫です。これらの値をデータベース/フラットライン/キャッシュに保存します。

<?php 

$data = file_get_contents('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25'); 

$oceanic = explode('<dt>Oceanic: </dt>', $data); 
$oceanic = substr($oceanic[1], 4, strpos($oceanic[1], '</dd>') - 4); 

$us = explode('<dt>US: </dt>', $data); 
$us = substr($us[1], 4, strpos($us[1], '</dd>') - 4); 

echo 'Oceanic: ' . $oceanic . "<br />\n"; 
echo 'US: ' . $us . "<br />\n"; 
+1

ありがとう、あなたはすごいです:) ここでは、スタイリングを可能にするdivやそれに似たものをどのように適用できるかを理解する必要があります。 アイデア –

0

クロスドメインセキュリティのために、javascriptでこれを行うことはできません。あなたがアクセスできる場合は、情報サーバー側を取得する必要があります。

+0

私は自分のサーバーにアクセスしていますか、または自分のサーバーを意味していますか? –

+0

あなたのサーバーのバックエンドコードはありません。私はbelive johnさんの下にphpの例を示しています –

0

ここにはRegExのソリューションがあります。

<?php 

$data = implode('', file('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25')); 
$pat_world = '/<span class="rank blue">(\d+)<\/span>/'; 
$pat_us = '/<dt>US:\D+(\d+)/'; 

preg_match($pat_world, $data, $world); 
preg_match($pat_us, $data, $us); 

echo $world[1]; 
echo "\n\n"; 
echo $us[1]; 

私は誰もがウェブスクレイピングのための抗正規表現ですけど、私はそれがこのような単純な状況でだけ素晴らしい作品だと思います。

+0

私は実際に最初のパターンを単純化することができました。結果を変更するわけではありません。 '/

world:\ D +(\ d +)/'はまったく同じです。 – FakeRainBrigand

+0

regexを使用すると、特にレイアウトが変更された場合、6ヵ月後にデバッグするのに苦労することがあります。簡単な関数呼び出しの文字列をデバッグする方が簡単です。 –

1

非常に簡単です。私はsimplehtmldomを使用するほうが好きですが、組み込みのPHP DOM解析メソッドを使用することもできます。

require 'simple_html_dom.php'; 
$html = file_get_html('http://www.wowprogress.com/guild/us/caelestrasz/Crimson/rating.tier13_25'); 
$xxx = $html->find('div.guildStats dl dd'); 

foreach($xxx as $k) 
echo $k->plaintext."\n"; 
関連する問題