嵌入网站的一部分

时间:2010-02-01 11:36:52

标签: html embed screen-scraping

假设我想将我最喜欢的一个webcomics的最新漫画嵌入我的网站作为一种促销。 webcomic在带有id的div里面有条带,所以我想我可以在我的网站中嵌入div,除了我找不到任何代码示例如何做(它们都显示如何嵌入flash或整个网站)。 有人可以告诉我(或告诉我)它是如何完成的吗?

PS我宁愿不使用服务器端脚本或外部服务(这是通常建议用于嵌入RSS)。

4 个答案:

答案 0 :(得分:12)

更新 - 使用jQuery跨越域请求(在客户端)

昨天我正在浏览James Padolsey的博客,在那里他发表了一篇很棒的文章,关于如何用jQuery做cross domain request,还有Chris Heilmann有一个很好的DEMO

原则是使用YQL - >用于网页查询的yahoo api,您可以在其中收到包含所有html的JSON。快乐的刮痧:)

使用php抓取远程数据,使用jQuery加载

如果考虑简单的 AJAX 调用,会拦截漫画元素,并使用主要用于此目的<div id="update-comic" />的内容进行更新?

此外,您将使用简单的 php 来获取远程页面,因为您无法在其他域上进行ajax调用

注意:用户必须启用JavaScript,代码使用jQuery库

全部放在一起

  1. 在您的页面上,您只想为此目的显示远程漫画创建 div ,我们可以将其称为update-comic

    <div id="update-comic">
        <!-- here comes scraped content -->
    </div>
    
  2. 写下 php ,称之为comic-scrape.php,它会从远程页面下载html ,你应该考虑缓存响应并在指定的时间间隔内更新(例如30分钟,1小时,您的电话...... :))

    在简单的高速缓存检查实现

    之后,

    服务器性能不会受到影响

    <?php
        $url = 'http://www.example.com/';
        $response = file_get_contents($url);
        echo $response;
    
  3. 现在出现了 jQuery 魔术,你可以在你的php刮刀上进行ajax调用,只选择你感兴趣的相关元素。将此脚本放在视图页面< / strong>(您有<div id="update-comic" />

    的地方
    <script type="text/javascript">
    $(function () {
        // set all your required variables
        var 
            localUrl = '/comic-scrape.php',
            elementId = '#remote-comic-id',
            elementToUpdate = $('#update-comic');
    
            // update the local elementToUpdate with elementId contents
            // from your php in localUrl
    
            elementToUpdate.load(localUrl + ' ' + elementId;
    });
    </script>
    
  4. 我希望,我涵盖了一切。

    使用simplexml和xpath

    正如philfreo在评论中建议的那样,可行的解决方案还可以包含选择所需的id服务器端。使用php的simplexml和一个小的xpath非常容易:

    <?php
    
        // set remote url and div id to be found
        $elementId = 'remote-comic-id';
        $url = 'http://www.example.com/';
    
        // instantiate simple xml element and populate from $url
        $xml = new SimpleXMLElement($url, null, true);
    
        // find required div by id
        $result = $xml->xpath("//div[id={$elementId}]");
    
        // take first element from array, which is our desired div
        $div = array_pop($result);
    
        echo $div;
    

答案 1 :(得分:1)

这是不可能的,因为你无法操纵iframe / frame内容。使用iframe标签只会修改标签中的内容,但不会修改src。 既不是AJAX,也不是因为你必须在同一个域上。

因此,例如,您可以将PHP与cURL一起使用,或者仅使用fopen。

答案 2 :(得分:-1)

您可以使用iframe。内容不是字面上的页面,但它看起来像。

以下是一个示例:http://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_iframe

看起来像这样:

<iframe src ="http://www.example.com/index.html" width="100%" height="300"></iframe>

答案 3 :(得分:-2)

&lt; embed src =“你的漫画的网址”width =“300”height =“250”/&gt;