Javascript 正在寻找一种使用JS刮取HTML的方法

Javascript 正在寻找一种使用JS刮取HTML的方法,javascript,jquery,html,web-scraping,Javascript,Jquery,Html,Web Scraping,正如标题所示,我正在寻找一种从网页中删除所有HTML的简单方法。可能将其存储在字符串中,然后在该字符串中导航以提取所需的元素 具体地说,我想清理我的twitter页面,并在一个新的div中显示我的个人资料图片。我知道有几种工具可以做到这一点,但我希望任何人都能提供一些代码示例或建议,让我自己来做这件事 非常感谢 更新 在得到T.J.Crowder非常有用的回复后,我在网上进行了更多的搜索,并找到了这个答案。理论上,这很容易。您只需执行一个ajax调用来获取页面的文本,然后使用jQuery将其转换

正如标题所示,我正在寻找一种从网页中删除所有HTML的简单方法。可能将其存储在字符串中,然后在该字符串中导航以提取所需的元素

具体地说,我想清理我的twitter页面,并在一个新的div中显示我的个人资料图片。我知道有几种工具可以做到这一点,但我希望任何人都能提供一些代码示例或建议,让我自己来做这件事

非常感谢

更新


在得到T.J.Crowder非常有用的回复后,我在网上进行了更多的搜索,并找到了这个答案。

理论上,这很容易。您只需执行一个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
        }
    }
});
但是它不太可能工作,因为它阻止了跨源ajax调用。某些网站可能有开放政策,但大多数不会,当然也支持IE8和IE9上的COR


因此,要对不允许您通过CORS进行源站访问的站点执行此操作,必须有一个服务器参与。它可以是您的服务器,您可以使用服务器端代码获取所需页面的文本,然后通过ajax将其发送到页面(或者在首次呈现页面时将所需的位构建到页面中)。所有常用的服务器端堆栈(PHP、Node、ASP.Net、JVM等)都具有抓取网页的能力。或者,在某些情况下,您可以使用他们的服务器,而不是您自己的服务器。

理论上,这很容易。您只需执行一个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
        }
    }
});
但是它不太可能工作,因为它阻止了跨源ajax调用。某些网站可能有开放政策,但大多数不会,当然也支持IE8和IE9上的COR


因此,要对不允许您通过CORS进行源站访问的站点执行此操作,必须有一个服务器参与。它可以是您的服务器,您可以使用服务器端代码获取所需页面的文本,然后通过ajax将其发送到页面(或者在首次呈现页面时将所需的位构建到页面中)。所有常用的服务器端堆栈(PHP、Node、ASP.Net、JVM等)都具有抓取网页的能力。或者,在某些情况下,您可以使用他们的服务器,而不是您自己的服务器。

感谢您提供了信息丰富的答案!真的很感激!和代码片段。我想我的下一步是Node.js。但是,如果我登录到服务器,根据这个wiki页面,我没有违反跨源策略?@prole:“origin”是协议、端口和主机的组合。因此,您可以使用同一主机,但仍在进行跨源调用。但这是否意味着我已登录到另一台服务器<代码>http://username:password@www.example.com/dir2/other.htmlhanks获取信息性答案!真的很感激!和代码片段。我想我的下一步是Node.js。但是,如果我登录到服务器,根据这个wiki页面,我没有违反跨源策略?@prole:“origin”是协议、端口和主机的组合。因此,您可以使用同一主机,但仍在进行跨源调用。但这是否意味着我已登录到另一台服务器<代码>http://username:password@www.example.com/dir2/other.html