如何从浏览器中抓取网站?

Posted

技术标签:

【中文标题】如何从浏览器中抓取网站?【英文标题】:How to scrape websites from within browser? 【发布时间】:2014-05-23 10:26:24 【问题描述】:

我想通过在浏览器中运行代码来抓取网站。在这种情况下,刮板必须在特定机器上运行,而我无法在该机器上安装 任何 软件。但是,已经安装了浏览器(最新版本的 Firefox),我可以随意配置浏览器。

我想要的是一个用于抓取的 javascript 解决方案,包含在站点 A 的网页中,可以抓取站点 B。这似乎会遇到一些 CORS 类型的问题;我认为部分解决方案是禁用浏览器中的任何跨域检查。

到目前为止我已经尝试过什么:我查找了“javascript 中的网络抓取”,这带来了很多打算在 nodejs 中运行的东西,例如 this tutorial,还有像 pjscrape 这样需要 PhantomJS 的东西.但是,我找不到任何可以在浏览器中运行的等效项。

附:这很有趣:Firefox setting to enable cross domain ajax request 显然Chrome --disable-web-security 负责跨域/跨域问题。 Firefox 等价物?

附:看起来 Firefox 的 ForceCORS 扩展也很有用:http://www-jo.se/f.pfleger/forcecors 我不确定我是否能够安装它。

附:这是允许在不同浏览器中跨域的一组很好的方法:http://romkey.com/2011/04/23/getting-around-same-origin-policy-in-web-browsers/ 遗憾的是,建议的 Firefox 解决方案在 >=5 版本中不起作用。

【问题讨论】:

看起来你有一些有用的链接可以阅读。您的具体问题是什么? @RayNicholus:这些是试图解决相同问题的人的链接,但没有一个描述在最近的 Firefox 版本中有效的解决方案,比方说比 2011 年更新。ForceCORS 显然失败了,并且 enablePriviledge () API 不再可用。 您针对的是哪些特定浏览器?除非您完全控制浏览器,否则您可以可靠地完成此操作的唯一方法是通过您控制的服务器代理您希望抓取的站点。 @RayNicholus:我的目标是 Firefox 11 或更高版本。我确实可以完全控制浏览器,但无法运行代理。 您最好的选择是将您的应用程序安装为扩展程序,这样同源策略的执行更受您的控制。 【参考方案1】:

尝试使用import.io:(基本上是使用 REST API 的抓取服务)

只要我有一个对 API 的示例 javascript 调用,我就可以提供它。或者您自己查看docs。

Import.io 允许您使用简单的点击技术将您在网页上找到的数据结构化为行和列。

首先您要找到您的数据:使用我们的浏览器导航到一个网站(从我们这里下载:http://import.io)。

然后,通过单击浏览器右上角的粉红色 IO 按钮进入我们专用的数据提取工作流程。

我们将指导您构建页面上的数据。您通过向我们展示数据所在位置的示例来教 import.io 如何提取数据。我们创建了从这些示例中进行概括的学习算法,以研究如何获取网站上的所有数据。 您收集的数据存储在我们的云服务器上以供下载和共享。 每次您发布到我们的平台时,我们都会创建一个 API 以编程方式获取数据,以便您可以轻松地将实时网络数据集成到您的应用程序或第三方分析和可视化软件中。

编辑:

如果数据识别在浏览器中有效,您可以通过前往“简单 API 集成”并复制 url 来访问数据

你可以粘贴在这里的网址:

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();

xhr request source

【讨论】:

以上是关于如何从浏览器中抓取网站?的主要内容,如果未能解决你的问题,请参考以下文章

用beautifulsoup4从天才网站上抓取评论

请教网页里的特定数据怎么抓取?

如何抓取网页中的动态数据

如何从 Instagram 网络浏览器中抓取关注者?

如何用Python爬虫抓取网页内容?

怎么用VBA或网络爬虫程序抓取网站数据