严选品质
正规商家

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.hostcps.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)
未经允许不得转载:主机推广 » Shell使用pup以CSS选择器方式提取网页内容教程