2017-04-19 53 views
0

我有兴趣尝试网络抓取项目。目标网站使用Javascript来动态加载和更新内容。大多数关于网站抓取此类网站的讨论表明,在尝试这样的项目时,node.js,casper.js,phantom.js和nightmare.js都是合理流行的工具。 Node.js似乎最常用。运行Flask Web服务器是否会阻止Node.JS中的网页抓取?

如果我正在运行Flask服务器并希望显示node.js的结果,例如,在我的网站上以表格格式进行刮擦,这可能吗?我会遇到兼容性问题吗?或者我应该尝试使用基于python的方法将其与BS4拼凑起来以保持一致性?我问,因为node.js被描述为一个服务器,所以我假设如果我试图同时使用它和Flask,就会出现冲突。

回答

1

如果你想编写一个执行javascript的网页抓取工具,node.js(类似Phantom.js)是一个不错的选择。另一个流行的选择是Selenium。您需要模拟用户操作以激活事件处理程序。我们称之为“刮”行动。 BS4不适合,因为它不能执行JavaScript。

将数据保存到磁盘后,以HTML表格形式显示结果(让我们将此操作称为“reporting”)将需要另一个解决方案。烧瓶是一个合适的选择。

由于抓取和报告是单独的问题,如果您想同时使用这两种服务,则不会产生冲突。当使用Selenium或node.js作为刮板时,您并不是真正运行Web服务器。所以将其视为两个可能发生冲突的Web服务器是不正确的。

+0

谢谢!起初我以为节点只是另一种语言,然后我开始阅读,并将它看作是一个Web服务器。接下来,幻影,casper和噩梦从木制品中出现,这增加了混乱。我衷心感谢清晰而简明的回应! – Ryan

相关问题