使用jquery检索外部页面数据

时间:2010-01-31 08:21:24

标签: jquery load external

我需要检索有关ventrilo服务器状态的信息。 ventrilo的网站提供检索服务器信息的服务。例如,这是游戏竞技场ventrilo服务器:http://www.ventrilo.com/status.php?hostname=144.140.154.11&port=25000

我正试图抓住“频道和用户信息”下的部分。但该表没有id,页面上还有许多其他表。我怎么能这样做?

我还听说有些浏览器不允许你加载外部内容。我怎么能绕过这个?

2 个答案:

答案 0 :(得分:3)

除了Marc的回答,您可以使用Yahoo的YQL服务来检索具有以下查询的表

select * from html where url="http://www.ventrilo.com/status.php?hostname=144.140.154.11&port=25000" and xpath='//center[4]/table'

然后,您可以将YQL结果与jQuery一起使用,以在您的网站上显示以下演示中显示的表格。

工作演示

http://jsbin.com/eveka(可通过http://jsbin.com/eveka/edit编辑)

完整来源

的JavaScript

var
  ventriloStatus = $('#ventriloStatus'),
  hostname = '144.140.154.11',
  port = 25000,
  ventriloURL = 'http://www.ventrilo.com/status.php?hostname=' + hostname + '&port=' + port,
  yqlURL = 'http://query.yahooapis.com/v1/public/yql?callback=?',
  xpath = '//center[4]/table',
  query = 'select * from html where url="' + ventriloURL + '" and xpath="' + xpath + '"'
  data = {
    q: query,
    format: 'xml',
    diagnostics: false
  };

ventriloStatus.text('Loading...');
$.getJSON(yqlURL, data, function (response) {
  ventriloStatus.html(response.results[0]).find('img').each(function () {
    this.src = 'http://www.ventrilo.com/' + this.src.split('/').slice(-1)[0];
  });
});

HTML

<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Ventrilo with YQL</title>
<style>
  body { font: 8pt sans-serif; }
  p { display: inline; }
  #ventriloStatus{ width: 600px; }
</style>
</head>
<body>
  <h1>Ventrilo Status</h1>
  <div id="ventriloStatus"></div>
</body>
</html>

答案 1 :(得分:1)

两种方式:

1)如果有JSON服务,你可以使用JSONP(检查谷歌,但我个人不喜欢这个)

2)如果您的服务器端使用PHP,请查看PHPQuery,在脚本中执行抓取服务器端,并在AJAX中调用该脚本以获取提取的数据(您可能希望实现一些缓存级别,因为你正在使用网关...... APC将是一个友好的工具)。