You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Bash从HTML分页结构中提取最后一页页码?

嗨,这个需求我经常碰到,给你几个实用的Bash解决方案,根据你的HTML分页结构不同可以灵活选择:

先假设你的分页HTML结构大概是这样的(类似你说的最后一页是5的情况):

方案1:用grep+awk(适合结构简单的场景)

如果你的最后一页有明显特征(比如带class="last"),或者是最后一个页码链接,可以用文本处理工具快速提取:

  • 针对带特定class的最后一页:
# 从本地HTML文件提取
grep -o '<a.*class="last".*>\([0-9]*\)</a>' your_page.html | awk -F'[<>]' '{print $3}'

# 如果是直接从网页获取内容
curl https://your-target-site.com/list | grep -o '<a.*class="last".*>\([0-9]*\)</a>' | awk -F'[<>]' '{print $3}'
  • 如果没有特殊class,只是最后一个页码链接:
# 提取所有页码后取最后一行
curl https://your-target-site.com/list | grep -o '<a.*>[0-9]*</a>' | grep -o '[0-9]*' | tail -n 1

⚠️ 注意:正则处理HTML有局限性,如果页面结构变了(比如标签多了空格、属性顺序调整),可能就失效了。

方案2:用专门的HTML解析工具pup(更可靠,推荐)

正则处理HTML容易踩坑,用pup这种支持CSS选择器的工具会稳妥很多,它能精准定位元素。
首先安装pup(Debian/Ubuntu可以用sudo apt install pup,其他系统可以从源码编译):

  • 如果最后一页是分页容器里的最后一个链接:
curl https://your-target-site.com/list | pup '.pagination a:last-child text{}'
  • 如果最后一页有专属class(比如page-last):
curl https://your-target-site.com/list | pup '.page-last text{}'

方案3:用xmllint(适合规范的XHTML)

如果你的页面是标准的XHTML,可以用xmllint结合XPath查询:

curl https://your-target-site.com/list | xmllint --html --xpath 'string(//div[@class="pagination"]/a[last()])' - 2>/dev/null

这里的2>/dev/null是用来屏蔽xmllint对非标准HTML的警告信息。

你可以根据自己的实际HTML结构调整选择器,比如把.pagination换成你页面里分页容器的真实class或ID就行。

内容的提问来源于stack exchange,提问作者M.Mar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:25:18