简单的JS全页Web Scraping

时间:2015-06-26 02:20:48

标签: javascript web-scraping

我正在编写一个简单的单页Web应用程序。该应用程序需要将另一个站点的整页html文本加载到字符串中。我有其他网站的网址。如何将此外部页面的整页文本拉入javascript中的字符串?

2 个答案:

答案 0 :(得分:1)

实际上,可以通过javascript完成。 如果另一个站点启用了CORS,则可以使用ajax来获取远程URL内容。

如果未启用CORS,您可以使用自己的服务器来获取远程URL内容。因此,您可以向服务器发送ajax请求,您的服务器将获取远程内容并将其作为对您的ajax的响应。

此外,您可以在服务器上使用JSONP,或者如果您没有服务器,您可以找到为您提供此类功能的在线服务。

在这里,我创建了一个通过免费在线服务和JSONP获取远程URL的示例:http://jsfiddle.net/pisamce/2t1gz24x/

var res = document.getElementById('res'),
    url = document.getElementById('url')
    myVar = '';
window.show = function (jsonp) {
    myVar = jsonp[0].body; //assign response to your variable
    res.innerText = myVar;
}
document.getElementById('btn').addEventListener('click', function () {
    var s = document.createElement('script');
    s.src = 'http://jsonpwrapper.com/?urls%5B%5D=' + encodeURIComponent(url.value) + '&callback=show';
    document.getElementsByTagName('head')[0].appendChild(s);
});
<input id="url" type="text" value="http://example.com" />
<input id="btn" type="button" value="Get page html" />
<pre id="res"></pre>

答案 1 :(得分:0)

不,你不能在javascript中这样做。由于CORS,浏览器不允许您拨打此类电话。

您可以在服务器端执行此操作。点击服务器提取数据并回复您的网站。