站长视角
用户至上

Shell使用pup以CSS选择器方式提取网页内容教程

要提取简单网页内容,可以用 sed awk 命令,通过正则匹配提取。如果内容比较复杂的,最好选择 HTML 解释器来做。这里推荐一个,名叫 pup,它基于 CSS 选择器匹配内容,安装和使用都非常简单。

pup 安装

pup 用 go 语言写成,安装只需下载编译好的执行文件放入 /usr/local/bin 目录即可。

cd /usr/local/bin
wget https://github.com/ericchiang/pup/releases/download/v0.4.0/pup_v0.4.0_linux_amd64.zip
unzip pup_v0.4.0_linux_amd64.zip && rm -f pup_v0.4.0_linux_amd64.zip

之后运行 pup --help 测试是否命令是否可用。

pup 使用

举个简单示例。例如这是需要提取内容的 test.html 文件。

<!DOCTYPE html>
<html>
<body>

<h1>The a element</h1>

<a rel="nofollow" href="https://www.sshce.com/go?url=aHR0cHM6Ly93d3cuaG9zdGFyci5jb20=">主机指南</a>

</body>
</html>

提取 h1 标签内容(如果不加 text{} 则提取整个 HTML 标签)。

cat test.html | pup 'body > h1 text{}'

提取 a 标签链接(也可以用此方法提取其它 HTML 标签属性)。

cat test.html | pup 'body > a attr{href}'

匹配更多复杂内容,需要配合 CSS3 选择器,具体可看 GitHub 项目页说明。

如果将 pup 用于 Shell 脚本,发现其存在一个问题。pup 没有错误状态码返回,无论是否匹配到内容都会返回 0 状态码,这对添加逻辑处理会带来麻烦。除了这点,其它都还好,暂时没发现什么问题,基本满足使用需求。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权, 转载请注明出处。
文章名称:《Shell使用pup以CSS选择器方式提取网页内容教程》
文章链接:https://www.sshce.com/21360.html
【声明】:国外主机测评仅分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问国外主机测评,即表示您已经知晓并接受了此声明通告。
【关于安全】:任何 IDC商家都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。
香港110M(含10M CN2)大带宽独服限量促销,香港E3-8G-1T硬盘-3IP,月付仅799!

登录

找回密码

注册