HTML数据抓取(我认为)

时间:2011-12-21 18:54:07

标签: javascript jquery html css world-of-warcraft

我目前正在为一个客户做一些工作,这个客户恰好是魔兽世界的视频游戏组。

他们希望在自己的网站上显示目前的评分。

评分显示为here

他们想拥有'Oceanic'的号码,以及他们网站上显示的'US'号码。

是否有人能够告诉我一种方法,如果这些数字发生变化,我会自动更新这些数字?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用此代码段来废弃数据 - 假设PHP正常运行,因为您正在运行wordpress。我将这些值保存在数据库/ flatline / cache中。

<?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 :(得分: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";

答案 2 :(得分:0)

由于跨域安全性,您无法使用javascript执行此操作,如果您有权访问它,则必须获取信息服务器端。

答案 3 :(得分: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];

我知道每个人都是网络抓取的反正则表达式,但我认为它在这样的简单情况下效果很好。