如何在 shell 变量中获取网页的内容?

在 Linux 中,如何获取 URL 并在 shell 脚本中的变量中获取其内容?

338364 次浏览

您可以使用 wget命令下载该页并将其读入变量,如下所示:

content=$(wget google.com -q -O -)
echo $content

我们使用 wget-O选项,它允许我们指定 wget将页面内容转储到的文件的名称。我们指定 -将转储转储到标准输出,并将其收集到变量 content中。您可以添加 -q安静选项来关闭 wget 输出。

您还可以使用 卷发命令:

content=$(curl -L google.com)
echo $content

我们需要使用 -L选项,因为我们正在请求的页面可能已经移动。在这种情况下,我们需要从新的位置获取页面。-L--location选项可以帮助我们解决这个问题。

wget命令或 curl命令。

现在可以使用用 wget 下载的文件,也可以使用 curl 处理流。


资源:

content=`wget -O - $url`

您可以使用 curlwget来检索原始数据,或者您可以使用 w3m -dump来获得网页的漂亮文本表示。

$ foo=$(w3m -dump http://www.example.com/); echo $foo
You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser. These domain names are reserved for use in documentation and are not available for registration. See RFC 2606, Section 3.

有许多方法可以从命令行获取页面... ... 但这也取决于您是想要代码源还是页面本身:

如果需要代码源:

卷发:

curl $url

使用 wget:

wget -O - $url

但是如果你想得到你在浏览器上能看到的东西,lynx 会很有用:

lynx -dump $url

我认为您可以为这个小问题找到很多解决方案,也许您应该阅读这些命令的所有手册页。别忘了用你的网址替换 $url:)

祝你好运

如果您已经安装了 LWP,它将提供一个名为“ 走开”的二进制文件。

$ GET http://example.com
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>Example Web Page</TITLE>
</HEAD>
<body>
<p>You have reached this web page by typing &quot;example.com&quot;,
&quot;example.net&quot;,&quot;example.org&quot
or &quot;example.edu&quot; into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not available
for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC
2606</a>, Section 3.</p>
</BODY>
</HTML>

wget -O-curllynx -source的行为类似。

没有卷曲,没有 wget,没有 ncat,什么都没有? 使用 telnet:

$ content=$(telnet localhost 80)
GET / HTTP/1.1
Host: localhost
Connection: close
 

Connection closed by foreign host.

$ echo $content
HTTP/1.1 200 OK Date: Mon, 22 Mar 2021 12:45:02 GMT Server:
Apache/2.4.46 (Fedora) OpenSSL/1.1.1j Last-Modified: Mon, 31 Dec 2018
15:56:45 GMT ETag: "a4-57e5375ad21bd" Accept-Ranges: bytes
Content-Length: 164 Connection: close Content-Type: text/html;
charset=UTF-8 Success! 192.168.1.1