Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从其他网站获取特定的div内容_Javascript_Jquery_Html_Xmlhttprequest - Fatal编程技术网

Javascript 如何从其他网站获取特定的div内容

Javascript 如何从其他网站获取特定的div内容,javascript,jquery,html,xmlhttprequest,Javascript,Jquery,Html,Xmlhttprequest,我想从他们的网站到我的网站获取网站表内容。我通过以下函数获取innerHTML: function httpGet(theUrl) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=ne

我想从他们的网站到我的网站获取网站表内容。我通过以下函数获取innerHTML:

function httpGet(theUrl)
{
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            createDiv(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET", theUrl, false );
    xmlhttp.send();    
}


document.write(httpGet("https://cors.io/?http://crystalmathlabs.com/tracker-rs3/currenttop.php"));

function createDiv(responsetext)
{
    var _body = document.getElementsByTagName('body')[0];
    var _div = document.createElement('div');
    _div.innerHTML = responsetext;
    _body.appendChild(_div);
}
因此,这基本上复制了站点页面,没有所有的样式、图像和其他东西,这很好,但我想将其简化为使用特定类名的表。我在想一些方法来做到这一点

对URL做一些操作以屏蔽除我想要的表之外的所有元素,我甚至不确定这是否可行

过滤掉响应文本中的所有内容。它返回一个字符串,所以我想我需要一些主要的字符串操作来实现这一点

创建一个临时div,这样我就可以通过jQuery和JS操作一切,这是一种有点粗糙的方式,但我认为它会起作用


最好的方法是什么?或者是一个我还没有提到的想法。

不确定您的用例是否可以容纳服务器端代码,但是一个非常好的节点包是x射线,它可以解决这个问题

通过在服务器端这样做,您可以避免CORS问题,并且通过使用节点作为服务器,您仍然可以用JS编写所有内容

x-ray还提供了一个非常好的选项,如jquery,用于指向要从响应html中捕获的确切html节点

查看此处了解详细信息:

您可以使用DocumentFragment函数

将您收到的所有HTML添加到documentFragment,然后选择所需的HTML元素,就像从文档中选择一样,使用doDocument.querySelector为使用fragment.querySelector的片段选择所需的HTML元素

DocumentFragments允许开发人员将子元素放置到类似父节点的任意节点上,从而允许在没有真正根节点的情况下进行类似节点的交互。这样做允许开发人员在不在可见DOM中生成结构的情况下生成结构—速度的提高才是真正的优势

我将从收到的HTML开始,使用一个伪HTML并选择table.my-class并添加到自定义div中,您可以根据需要修改它

变量html=` HTML教程 这是一个标题 这是一段

公司 联系 国 阿尔弗雷德·福特基斯特 玛丽亚·安德斯 德国 莫特祖马商业中心 张锦松 墨西哥 恩斯特·汉德尔 罗兰·孟德尔 奥地利 岛屿贸易 海伦·贝内特 英国 笑巴克斯酒窖 田纳西 加拿大 马加兹尼营养不良 乔瓦尼·罗维利 意大利 `; $function{ 让fragment=document.createDocumentFragment; 设temp=document.createElement'div'; temp.innerHTML=html; fragment.appendChildtemp; var table=fragment.querySelector'table.my class'; document.querySelector'.preview'.appendtable; }
我不打算为此使用任何类型的服务器,尽管NodeJS将是我的首选。我通过第三方提交请求来避免CORS问题,我不介意这样做。你可以在我的网站的URL之前看到它example@RachelDockter,刚查过cors.io。这是一个非常好的工具,你正在使用。添加一个答案,看看它是否有帮助它并不理想,但我认为这是我能得到的最好的,谢谢,这让你觉得它不适合你的情况,你有一堆嵌套的HTML,你需要从中选择一些元素,您不能从收到的html中进行选择,因为它不会被视为html,而是文本,这是一种方法@拉谢尔多克特