Javascript:从网站中获取元素并将其显示在我的网站上?

Javascript:从网站中获取元素并将其显示在我的网站上?,javascript,web-crawler,Javascript,Web Crawler,我一直在努力从黑客新闻中获取头条新闻,尽管任何网站都可以提供一个例子 顺便说一下,这是我的代码: let getHTML = function (url, callback) { // Feature detection if (!window.XMLHttpRequest) return; // Create new request let xhr = new XMLHttpRequest(); // Setup callback xhr

我一直在努力从黑客新闻中获取头条新闻,尽管任何网站都可以提供一个例子

顺便说一下,这是我的代码:


let getHTML = function (url, callback) {

    // Feature detection
    if (!window.XMLHttpRequest) return;

    // Create new request
    let xhr = new XMLHttpRequest();

    // Setup callback
    xhr.onload = function () {
        if (callback && typeof (callback) === 'function') {
            callback(this.responseXML);
        }
    };

    // Get the HTML
    xhr.open('GET', url);
    xhr.responseType = 'document';
    xhr.send();

};

getHTML('https://news.ycombinator.com/news', function (response) {
    let someElem = document.querySelector('#someElementFromMyPage');
    let someOtherElem = response.querySelector('#someElementFromOtherPage');
    someElem.innerHTML = someOtherElem.innerHTML;
});


显示来自其他页面的元素,并将其带到我的页面

当我运行代码时,我在浏览器开发工具控制台()中收到一个CORS错误

问题

基本上,目标网站()限制了浏览器请求它的方式。并且浏览器符合并遵守此限制

  • JS代码发出请求
  • 浏览器从()读取响应并查看响应中包含的HTTP头
  • 因为有
    X-Frame-Options:DENY
    X-XSS-Protection:1 mode=block
    浏览器不允许您读取JS代码中的请求,所以您会得到一个错误
  • 解决方案

    有很多方法可以避免CORS错误,您可以自己研究:

    • 通过代理服务器传送请求,通过另一台剥离讨厌的CORS头的服务器路由CORS请求

    • 运行一个服务器进行网页抓取,服务器不必像浏览器那样尊重标题,所以你可以得到任何东西

    在浏览器中抓取内容越来越困难,因此您需要使用其他解决方案从其他网站获取内容


    希望这有帮助

    运行时会发生什么?CORS错误很明显,错误中有一个X-Frame-Options:DENY。非常感谢!我是一名JS游戏开发人员和全栈web开发人员,但我对web爬虫没有太多涉猎,所以我不知道CORS。这帮了大忙。谢谢不用担心,伙计,是的,这很让人困惑,我花了好几个小时试图调试CORS的问题,似乎对你可以在浏览器中请求的内容的限制每年都越来越严格(也许这是件好事)。。。不管怎样,很高兴我能帮忙!!