我如何导航(使用 TAB 或 hjkl 键)并单击内容(ENTER),在基于文本的浏览器(如 w3m 和 lynx)中使用 bash 脚本输入文本?我说基于文本,因为当我使用图形浏览器时,这些浏览器会在漫长的过程后耗尽我的内存。
在询问之前,我已经在 google 或 youtube 上搜索过这个东西,但我发现这实际上不是我想要的。我不知道如何告诉内核“按 ENTER!”或“按 TAB 6 次转到此处!”请帮帮我!我需要一个指南。你可以告诉我去学习这个或看这个。我看到了类似 Selenium 的东西,但那些东西太复杂了,并不是我想要的。
答案1
lynx 有录制和播放标志-cmd_log
和-cmd_script
。例如,如果您在 gnu.org 主页上按 4 次 tab 键,然后按 Enter 键,您将转到德语版本。
您可以使用以下方式在 Lynx 中记录此情况:
$ lynx -cmd_log=/tmp/gnu-log gnu.org
Looking up 'gnu.org' first
$ cat /tmp/gnu-log
# Command logfile created by Lynx 2.8.8pre.4 (04 Feb 2014)
# Arg0 = lynx
# Arg1 = -cmd_log=/tmp/gnu-log
# Arg2 = gnu.org
key Right Arrow
key Right Arrow
key Left Arrow
key <tab>
key <tab>
key <tab>
key <tab>
key ^J
key q
key <space>
在这个脚本中,我输入了 q 退出 lynx。因此,这个脚本将执行一些操作,然后返回命令行。另一方面,如果您想定位在 lynx 中,只需从这个 /tmp/gnu-log 文件中修剪最后两行。然后,您可以使用以下命令调用修剪后的文件:
$ lynx -cmd_script=/tmp/gnu-log gnu.org
Looking up 'gnu.org' first
...您将被定位在 lynx 的德语 gnu.org 页面上。
最后,出于脚本目的,只需lynx -cmd_script
在 bash 脚本中包含必要的参数即可。
完整讨论请见:
http://blog.unixy.net/2009/06/script-to-automate-browsing-actions-using-lynx/
此解决方案不允许交互式脚本。例如,您无法以编程方式评估网页的一部分,然后根据评估结果执行分支操作。但是,它在各种情况下都很有用。您确实可以轻松进行宏录制和回放。此外,您可以建立操作序列(当然还可以保存网页),并且可以设置cron 作业。
答案2
W3M 有一些基本的宏自动化,你也可以编写脚本
在 w3m 配置中启用本地 cgi-bin 文件夹
sed -i 's@cgi_bin.*@cgi_bin ~/.w3m/cgi-bin:/usr/lib/w3m/cgi-bin:/usr/local/libexec/w3m/cgi-bin@g' ~/.w3m/config
创建脚本
$EDITOR ~/.w3m/cgi-bin/macro_script.cgi && chmod +x ~/.w3m/cgi-bin/macro_script.cgi
echo "w3m-control: TAB_GOTO http://68k.news/"
echo "w3m-control: GOTO_LINE 15"
echo "w3m-control: NEXT_LINK"
echo "w3m-control: GOTO_LINK"
echo "w3m-control: NEXT_LINK"
echo "w3m-control: GOTO_LINK"
从终端执行
w3m file:/cgi-bin/macro_script.cgi
这应该会转到网站,跳转到第 15 行,打开下一个链接,一旦加载下一个页面,它将打开第一个链接
对于其他功能请参见https://github.com/tats/w3m/blob/master/doc/README.func