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


115

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

Answers:


189

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

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

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

您还可以使用curl命令:

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

我们需要使用该-L选项,因为我们请求的页面可能已经移动。在这种情况下,我们需要从新位置获取页面。该-L--location选项帮助我们与此有关。


这真是一个巧妙的把戏。我通过代理服务器上的php脚本调用Shell脚本。当询问时,代理服务器会打开昂贵的服务器,这些服务器会在2小时后关闭。我需要wget的输出以将标准输出反馈到Jenkins控制台记录。
丹尼斯

我还没有得到这个...任何人都可以演示如何,例如。在此链接的变量中获取img标签www2.watchop.io/manga2/read/one-piece/1/4 ??
juggernauthk108

@ juggernaut1996:那应该是一个单独的问题。简要地说,您必须下载页面,提取src正确元素的属性,然后下载页面。如果安装tq,则此命令应执行以下操作:curl -s http://ww1.watchop.io/manga2/read/one-piece/1/4 | tq -j -a src "#imgholder a img" | xargs wget
pyrocrasty

wget的1.14版本不接受convert_links = on-O-选择。它因错误而失败-k can be used together with -O only if outputting to a regular file.。是预期的吗?
Prasad Bonthu '18年

28

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

如果您需要代码源:

卷曲:

curl $url

使用wget:

wget -O - $url

但是,如果您想获得浏览器可以看到的内容,lynx可能会有用:

lynx -dump $url

我认为您可以找到许多解决此小问题的解决方案,也许您应该阅读这些命令的所有手册页。而且不要忘了用$url您的URL 替换:)

祝好运 :)




3

如果您安装了LWP,它将提供一个简单的名为“ GET ” 的二进制文件。

$ GET http://example.com
<!DOCTYPE HTML PUBLIC“-// W3C // DTD HTML 4.01 Transitional // EN”>
<HTML>
<头>
  <META http-equiv =“ Content-Type” content =“ text / html; charset = utf-8”>
  <TITLE>示例网页</ TITLE>
</ HEAD> 
<身体>  
<p>您通过输入“ example.com”访问了此网页,
“ example.net”,“ example.org”
  或“ example.edu” 进入您的网络浏览器。</ p>
<p>这些域名保留供文档使用,不可用 
  进行注册。参见<a href="http://www.rfc-editor.org/rfc/rfc2606.txt"> RFC
  2606 </a>,第3节。</ p>
</ BODY>
</ HTML>

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


2

您可以使用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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.