从外部站点的特定div中提取数据

时间:2011-08-25 21:57:05

标签: php javascript jquery

好的,我已经看到很多主题围绕这个主题徘徊,但我见过的所有主题都涉及JSON或Ajax来响应客户端事件。我不需要这样做。我只是想在我的页面加载时从外部站点上的特定div加载数据。

例如,假设外部网站http://www.example.site具有以下代码:

<div id="tm_score_1">
    129.5
</div>

当我自己的页面加载时,我希望能够提取129.5值。我假设它不像使用load("http://www.example.site #tm_score_1")那么简单,因为它是一个外部网站,对吗?

4 个答案:

答案 0 :(得分:4)

由于same origin policy没有一些服务器端代理,你不能在javascript中执行此操作。您可以在服务器上代理它,也可以使用其他人提供的代理,例如Yahoo(通过其他答案建议)YQL或YQL plugin

答案 1 :(得分:2)

扩展Tentonaxe关于从您的服务器检索它的说法 想法是有一个像

这样的路径
________      ________        __________
|      |     |        |      | external |
| user |     | server |      |   site   |
|______| ->  |________|  ->  |__________|
\......\     |........|      /........../
 \______\    |________|     /__________/

     \/-----<----<
                 ^ 
Javascript ->   PHP    ->  Retrieve Info -\/
                 ^<--------<--------<------

这个想法是你的你的服务器上的javascript调用php,然后使用curl或file_get_contents连接到外部服务器并检索信息。然后,此信息将从您服务器上的php传回javascript。

(是的,我很厌倦做一些(不可否​​认的)ascii艺术)。

答案 2 :(得分:2)

您可以使用cross domain jQuery plugin

然后,您可以使用yahoo的服务器作为代理执行以下操作。

$('#container').load('http://google.com'); // SERIOUSLY!

$.ajax({
    url: 'http://news.bbc.co.uk',
    type: 'GET',
    success: function(res) {
        var headline = $(res.responseText).find('a.tsh').text();
        alert(headline);
    }
});

詹姆斯·帕德尔西(James Padolsey)在博客上发表了here

答案 3 :(得分:0)

如果robots.txt允许,您可以使用YQL。这是current version of jQuery的查询。