Bash:在终端中显示网页内容

时间:2020-01-09 10:45:59  来源:igfitidea点击:

如何从bash获取HTML网页内容并使用Shell实用程序在屏幕上显示?
您可以使用以下任何一种工具或者将它们的全部结合使用来在shell程序中获取网页的内容:

[1]curl命令这是一种使用http/https /ftp从服务器或者向服务器传输数据的工具。

[2]lynx命令这是供运行终端的用户使用的功能齐全的万维网(WWW)客户端/浏览器。

[3]wget命令是一个免费实用程序,用于从Web上非交互式下载文件。
它支持HTTP,HTTPS和FTP协议,以及通过HTTP代理进行检索。

[4]w3m命令这是一个基于文本的Web浏览器和寻呼机。

安装

以上工具可能未安装在Linux或者Unix等操作系统上。

注意:您需要以root用户身份登录才能安装所需的工具。

Debian/Ubuntu Linux安装curl,wget,lynx和w3m

打开一个终端,然后执行:

$ sudo apt-get install curl wget lynx w3m

Fedora/RHEL/CentOS Linux安装curl,wget,lynx和w3m

打开一个终端,然后执行:

$ sudo yum install curl wget lynx w3m

FreeBSD Unix安装curl,wget,lynx和w3m(二进制软件包)

打开一个终端,然后执行:

$ sudo pkg_add -v -r curl lynx w3m wget

例子

您可以使用curl命令下载页面:

curl http://www.theitroad.local/
curl http://www.theitroad.local/faq/bash-for-loop/

使用curl并将输出存储到变量中,如下所示:

page="$(curl http://www.theitroad.local/)"
page="$(curl http://www.theitroad.local/faq/bash-for-loop/)"

要显示内容,请使用echo或者printf命令,如下所示:

echo "$page"
printf "%s" $page

lynx命令示例

使用lynx命令,如下所示:

lynx -dump www.theitroad.local
lynx -dump www.theitroad.local/faq/bash-for-loop/

-dump选项将默认文档的格式化输出或者在命令行上指定的输出转储到标准输出。
与交互模式不同,将处理所有文档。

wget命令示例

语法如下:

wget -O - http://www.theitroad.local
wget -O - http://www.theitroad.local/faq/bash-for-loop/

或者使用wget命令获取页面并将其存储到名为page的变量中:

page="$(wget -O - http://www.theitroad.local)"
## display page ##
echo "$page"
## or pass it to lynx / w3m ##
echo "$page" | w3m -dump -T text/html
echo "$page" | lynx -dump -stdin

w3m命令示例

使用w3m命令在终端中转储网页内容的语法如下:

w3m -dump http://www.theitroad.local/
w3m -dump http://www.theitroad.local/faq/bash-for-loop/

或者使用w3m命令抓取页面并将其存储到名为page的变量中:

page="$(w3m -dump http://www.theitroad.local/)"
echo "$page"