我想通过在浏览器中运行代码来抓取网站。在这种情况下,刮刀必须在特定的机器上运行,我无法在该机器上安装任何软件。但是,已经安装了浏览器(最新版本的Firefox),我可以根据需要配置浏览器。
我想要的是一个用于抓取的javascript解决方案,包含在网站A的网页中,可以抓取网站B.看起来这会遇到一些CORS类型的问题;我假设解决方案的一部分是禁用浏览器中的任何跨源检查。
我到目前为止所尝试的内容:我在javascript"中查找了网页抓取,这带来了很多用于在具有cheerio的nodejs中运行的东西,例如this tutorial,还有东西像需要PhantomJS的pjscrape。但是,我找不到任何打算在浏览器中运行的等效内容。
P.S。这很有趣:Firefox setting to enable cross domain ajax request显然Chrome --disable-web-security
负责跨域/跨域问题。 Firefox等价?
P.S。看起来对Firefox的ForceCORS扩展也很有用:http://www-jo.se/f.pfleger/forcecors我不确定我是否能够安装它。
P.S。这是在不同浏览器中允许跨域的一种很好的方法集合:http://romkey.com/2011/04/23/getting-around-same-origin-policy-in-web-browsers/遗憾的是,建议的Firefox解决方案在版本> = 5中不起作用。
答案 0 :(得分:-1)
尝试使用import.io :(基本上是使用REST API的抓取服务)
只要我有一个示例javascript调用API,我就可以提供它。或者你自己查看docs。
Import.io允许您使用简单的点击技术将您在网页上找到的数据结构化为行和列。
首先您找到您的数据:使用我们的浏览器导航到网站(从我们这里下载:http://import.io)。
然后,通过单击浏览器右上角的粉红色IO按钮进入我们的专用数据提取工作流程。
我们将指导您构建页面上的数据。您通过向我们展示数据所在的示例来教导import.io如何提取数据。我们创建学习算法,从这些示例中进行概括,以确定如何获取网站上的所有数据。 您收集的数据存储在我们的云服务器上以供下载和共享。 每次您发布到我们的平台时,我们都会创建一个API来以编程方式获取数据,以便您可以轻松地将实时Web数据集成到您的应用程序或第三方分析和可视化软件中。
编辑:
如果数据识别在浏览器中有效,您可以通过前往"简单的API集成"来简单地访问数据。并复制网址
你可以在这里粘贴网址:function reqListener () {
console.log(JSON.parse(this.responseText));
return JSON.parse(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "yourUrlFromClipboardComesHere", true);
oReq.send();