【问题标题】:Run PhantomJS script when button clicked单击按钮时运行 PhantomJS 脚本
【发布时间】:2017-02-27 19:34:16
【问题描述】:

上下文:我正在使用 NodeJS/jQuery 抓取一些网站,但遇到了麻烦,因为我想要页面的一些元素是动态生成的。然后,我对其进行了研究,发现 PhantomJS 是这种情况下的更好选择。 ~哇哦,太好了。~

现在我想要构建一个非常简单的网站(只有一个按钮?)只是为了执行这个 PhantomJS。

我在做什么的代码示例:

var page = require("webpage").create();
page.open('https://website.that.Iam.scraping.com', function(status) { ... 

我在 bash 中称这个 PhantomJS 为:

phantomjs scraper.js

想要的结果: 带有按钮的简单 UI 网页(运行 phantomjs 脚本)以及网页上出现的脚本结果。

问题:单击按钮时如何运行此 PhantomJS?有可能吗?

PS:我正在考虑用 Ruby 创建网站。这是一个不错的选择吗?

提前非常感谢,伙计们! 祝你有美好的一天!

【问题讨论】:

  • 当在您不拥有的页面上单击按钮时?您需要遍历您感兴趣的所有内容(可能使用 X Path)并附加一个侦听器,该侦听器会停止传播并触发一些您的虚拟脚本可以获取的日志消息。
  • 当在您不拥有的页面上单击按钮时?该按钮在我的网页上,它运行 phantomjs(抓取另一个页面)。 XPath 能做到吗? (“激活”一个 phantomjs 脚本?)。但是我怎么能把这个监听器附加到我的网页上呢?

标签: javascript jquery ruby node.js phantomjs


【解决方案1】:

我猜你想要的是一个带有一个按钮的简单网页,你点击它,它与服务器对话,服务器运行 phantomjs 脚本并获取结果,然后将其发送回你的网页。

是的,绝对有可能。

  1. 首先确保您的 phantomjs 脚本能够自行执行您想要的操作,在命令行上调用它应该可以正常工作
  2. 然后你需要在服务器端构建一个请求处理程序,它会接受你的按钮点击请求,调用phantomjs(通过为phantomjs生成一个新的子进程,并等待它的执行,完成后得到它的结果,只需将您的服务器端代码视为一个简单的 bash 命令行),发回结果并将其显示在您的页面上。

Ruby 可以很好地构建这样的东西。

【讨论】:

  • 你肯定明白了!只是关于你提到的一个问题:如何在服务器端进行这个 phantomjs 调用?我的意思是,假设我有一个在本地运行的 server.js。在这个文件中,我将有按钮请求处理程序,调用 phantomjs.
  • 因此,phantomjs 完成了它必须做的事情,将信息返回给 server.js。最后,我从服务器获取此信息并显示在网页上。你是说这个流量吗?谢谢你的回复,伙计!
  • 使用 node.js,你可以查看child process doc,你会知道如何调用外部程序(这里是你的 phantomjs 脚本),你还可以通过阅读从 phantomjs 脚本获取输出child.stdout,对于 ruby​​,这几乎是一样的。
  • 我遵循了您提到的内容,但我认为我缺少一些概念。 我在哪里: 现在我的服务器正在运行并调用 phantomjs 脚本。我从幻影脚本中得到结果(但在控制台中)。 我想要什么:我想通过单击按钮调用此方法(即服务器文件),并显示我在网页的控制台中看到的这些结果。你知道我该怎么做吗?
  • @FelpS。请记住,我们不喜欢提问者不断提出后续问题的变色龙问题。如果您不能自己解决,您可以提出一个新问题(Stack Overflow 不用于讨论)。考虑到您的问题:由于我不知道您的代码,因此您似乎只是在向控制台写一些东西。我知道在 PHP 中控制台和页面内容不是分开的,但在其他语言中它们是分开的,您可以同时拥有:将一些日志写入控制台并同时为 HTML 输出构建 DOM。
猜你喜欢
  • 2023-03-09
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多