如何在Bash中执行JavaScript?

3
我尝试从Bash直接访问http://www.ocwconsortium.org/中的一个页面。当你在右上角的字段中输入数学时,页面会出现。我测试了

open http://www.ocwconsortium.org/#mathematics

但它会导航到主页。显然这是一些JavaScript的东西。如何才能从第一页直接获得结果?

[澄清]

让我们举个例子。我在.bashrc中为一个数学搜索引擎编写了以下行:

alias mathundergradsearch='/Users/user/bin/mathundergraduate'

在单独的文件中的事物:

#!/bin/sh                                                                                                                                                                     

q=$1
w=$2
e=$3
r=$4
t=$5

open "http://www.google.com/cse?cx=007883453237583604479%3A1qd7hky6khe&ie=UTF-8&q=$q+$w+$e+$r+$t&hl=en"

现在,我想要一个类似于示例的东西。不同之处在于另一个网站包含JavaScript或其他内容,使我无法查看参数。我应该如何知道在哪里放置搜索参数,因为我无法看到细节?


你应该添加更多关于你想实现什么的信息,否则你可能得不到任何有用的答案。 - Wouter van Nifterick
1
请澄清您的问题。您要找哪些“结果”?课程列表?课程链接?另外,从bash获取结果,我假设您是想在shell提示符下键入命令并显示“结果”? - Van Gale
Van Gale:您的建议非常完美。在CLI中,将“课程列表”和“课程链接”并排显示会非常酷。对于一开始,我很高兴能够打开页面。然后,您的选项变得更加具体。我原本计划像您的想法那样做,但我试图保持问题的特定性。我该如何查看某些课程的搜索结果? - Léo Léopold Hertz 준영
5个回答

3
open "http://www.ocwconsortium.org/index.php?q=mathematics&option=com_coursefinder&uss=1&l=&s=&Itemid=166&b.x=0&b.y=0&b=search"

你需要使用引号,因为URL中包含一些被shell视为特殊字符的内容。


非常酷!你是怎么知道Itemid中的参数,比如“com_coursefinder”和“166”的? - Léo Léopold Hertz 준영
我在搜索栏中搜索了数学,然后复制了URL。你用的是什么浏览器? - Chas. Owens
在Firefox上,完整的URL和参数会显示在地址栏中。不确定在其他浏览器上是否也是如此。 - David Z
单引号更好,因为双引号可以被 bash 扩展。 - Arafangion

3

Links浏览器基本上是从命令行运行(类似于lynx),并支持基本的javascript。

尽管帖子的标题听起来很一般,但你的问题非常具体。我不清楚你最终想要实现什么。显然,你可以访问那些严重依赖javascript的网站(否则你就不能在这里发布问题),所以我相信你可以在普通浏览器中打开提到的网站。

如果你只想从命令行执行javascript(如标题所示),如果你正在通过cygwin运行bash,那么很容易。你只需要调用cscript.exe,并提供一个.js脚本名称,以执行你想要执行的内容即可。


我很感兴趣。你能看到每个站点的具体参数吗,例如Samir Talwar回复中的参数? - Léo Léopold Hertz 준영

1

JavaScript 没有处理任何东西 - 它只是把我带到了

http://www.ocwconsortium.org/index.php?q=mathematics&option=com_coursefinder&uss=1&l=&s=&Itemid=166&b.x=0&b.y=0&b=search

替换mathematics(在q=之后)应该可以。您可能能够剥离一些查询字符串,但我尝试了几个方法,它并不好用。

不要忘记对URL进行编码。


你是如何看到这些参数的?当我搜索时,只能得到“http://www.ocwconsortium.org/#key_word”。 - Léo Léopold Hertz 준영
地址栏中的URL已更改,但页面随后被重定向到上面的URL。我不确定我的浏览器配置与您的有何不同 - 我正在使用Firefox,并且已启用JavaScript。 - Samir Talwar

0
看看这个:http://www.phantomjs.org/
PhantomJS是一个CLI工具,可以在没有Chrome的情况下运行真正的、完整的浏览器。

0
你需要解析响应,找到通过 JavaScript 打开的 URL,然后打开该 URL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接