- 此问题在此处已有答案**:
XMLHttpRequest cannot load XXX No 'Access-Control-Allow-Origin' header(11个答案)
8小时前关门了。
我正在尝试使用JQuery Ajax抓取www.example.com(只是为了好玩)。google.com (just for fun) using JQuery Ajax.
主要是通过将整个站点提取到一个var中,然后从中剥离必要的标记。
然而,它有点工作的正常网站,但当我尝试www.example.com,它通过了一个CORS的问题。google.com, it passed a CORS issue.
如果我无法控制客户端站点或主机,我该如何解决这个问题?
例如,不能放置header('Access-Control-Allow-Origin: *');
- 我的密码是:**
$.ajax({
url: "https://www.google.com/",
dataType: 'text',
success: function(data) {
var title = $("<div>").html(data)[0].getElementsByTagName("title")[0];
console.log(title);
}
});
- 错误:**
Access to XMLHttpRequest at 'https://www.google.com/' from origin 'https://xxxxx.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
- 错误:**
任何帮助都将不胜感激。
2条答案
按热度按时间kiayqfof1#
要抓取Google(或其他网站),你需要使用node.js(如果你想用javascript写的话),有三种常用的方法:
第一个解决方案(axios + cheerio).它快速而简单,但它不能从页面获取动态内容(使用JS构建),并可能被网站保护阻止(阅读更多内容,请参阅Reducing the chance of being blocked while web scraping博客文章):
第二个解决方案(puppeteer).给你更多的自由,它可以在页面上做任何人类能做的事情,但它很慢,很难用途:
第三种解决方案(serpapi)。它的主要优点是不需要从页面中选择必要的CSS选择器,也不需要维护你的scraper(当选择器随着时间的推移而改变时)。此外,它像一个简单的HTTP请求一样快速,但它并不支持所有的网站:
h43kikqp2#
我已经解决了它安装CORS扩展在我的默认浏览器。为此,我使用谷歌浏览器扩展在下面的链接:https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=en