【问题标题】:Getting source code of other domain website using jquery使用jquery获取其他域网站的源代码
【发布时间】:2013-11-19 13:28:39
【问题描述】:

我想获得部分 youtube 页面源代码。

我尝试过yahoo yql、JsonP等跨域ajax技术。在 yahoo YQL 的帮助下,我可以获取部分源代码。但是,由于它可能是不同的域,所以我从 ajax 响应文本中得到的内容中没有参数。如何在不使用服务器端程序的情况下解决问题?谢谢

链接:http://www.youtube.com/watch?v=F6JiCJ5x3Qw

从元素检查器可以看到,有一行<div id="player-api" class="player-width player-height off-screen-target watch-content player-api" style="overflow: hidden;">

我想获取这个 div 中的所有元素

【问题讨论】:

    标签: javascript jquery html ajax cross-domain


    【解决方案1】:

    在这种情况下,最简单的做法可能是使用 YouTube API。

    但是,一般来说,您希望将页面加载到 iFrame 而不是 div:

    <iframe id="iframe" src="http://targetwebsite.com/"></iframe>

    然后得到iFrame的HTML如下:

    document.getElementById('iframe').contentWindow.document.body.innerHTML

    【讨论】:

    • 感谢您的帮助。我尝试了这种方法,但它显示“拒绝在框架中显示'youtube.com/watch?v=F6JiCJ5x3Qw',因为它将'X-Frame-Options'设置为'SAMEORIGIN'。”
    • 啊,同源策略。在这种情况下,您最好使用 YouTube API。
    【解决方案2】:

    如果您无法控制端点(在本例中为 youtube),请在您自己的服务器上使用代理脚本

    因此,您将调用 yourproxyscript?some_arguments,而不是调用 youtube url。现在“yourproxyscript”将加载 youtube url 并将其返回给您的 ajax 调用,绕过任何跨域问题。

    【讨论】:

    • 我尝试过使用 YQL,但 youtube 似乎只有在直接访问时才包含视频内容
    • 如果您查看您提供的 url 的来源(实际未修改的 html 来源,由原始请求返回),您会注意到所需的 div 是空的。我认为它是稍后由javascript填充的。这使事情变得复杂。假设您想在页面中显示视频,为什么不直接使用 youtube 的嵌入代码?
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2012-01-30
    • 2012-11-28
    • 2023-02-14
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多