寻找一种用JS抓取HTML的方法

时间:2014-01-10 07:36:37

标签: javascript jquery html web-scraping

正如标题所示,我正在寻找一种从网页上抓取所有HTML的希望直截了当的方法。或许将它存储在一个字符串中,然后在该字符串中导航以获取所需的元素。

具体来说,我想刮掉我的推特页面并在新的div中显示我的个人资料图片。我知道有几种工具可以做到这一点,但我会有人提供一些代码示例或建议我自己如何做到这一点?

非常感谢

更新

来自T.J.的非常有益的回应克劳德我在网上搜索了一些,发现了resource

1 个答案:

答案 0 :(得分:4)

从理论上讲,这很容易。您只需执行ajax调用即可获取页面文本,然后使用jQuery将其转换为断开连接的DOM,然后使用所有常用的jQuery工具查找并提取所需内容。

$.ajax({
    url:     "http://example.com/some/path",
    success: function(html) {
        var tree = $(html);
        var imgsrc = tree.find("img.some-class").attr("src");
        if (imgsrc) {
            // ...add the image to your page
        }
    }
});

但是 (并且它是一个很大的)它不可能工作,因为Same Origin Policy会阻止交叉-origin ajax来电。某些个别网站可能有一个开放的CORS政策,但大部分都不会,当然还支持IE8和IE9上的CORS requires an extra jQuery plug-in

因此,对于不允许通过CORS来源的网站,必须要有服务器。它可以是您的服​​务器,您可以使用服务器端代码获取所需页面的文本,然后通过ajax将其发送到您的页面(或者只需在您的页面中构建您想要的位首先渲染它)。所有常见的服务器端堆栈(PHP,Node,ASP.Net,JVM,......)都能够抓取网页。或者,在某些情况下,您可以使用他们的服务器而不是您自己的服务器来使用YQL as a cross-domain proxy