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

如何使用wget检测网页包含指定内容并提取对应URL

筛选包含指定内容的页面URL实现方案

你当前使用的--spider参数仅会让wget做链接存活性检查,不会下载页面HTML内容,因此无法直接基于内容筛选URL,可按以下两种方案实现需求:

方案1:先本地缓存全站页面再筛选(推荐,适合站点规模较大的场景)

步骤1:递归下载全站HTML页面并导出所有URL

# 替换示例中的site.com为目标站点域名,HTTPS站点自行修改前缀
wget --mirror --accept html,htm --directory-prefix=./site_cache http://site.com 2>&1 | grep -oe 'http[^ ]*' | sort | uniq > all_urls.txt

参数说明:

  • --mirror:镜像模式,自动适配递归深度、保留站点目录结构、避免重复下载
  • --accept html,htm:仅下载HTML页面,过滤图片、样式、脚本等非必要资源
  • --directory-prefix=./site_cache:所有下载内容存储到当前目录的site_cache文件夹内
  • 最终输出的all_urls.txt为全站可用URL列表,和你原有命令输出效果一致

步骤2:按内容筛选对应URL

匹配固定文本

替换命令中的目标文本为你要查找的内容:

grep -rl "目标文本" ./site_cache/ | while read cache_path; do
  # 本地缓存路径转原始URL,HTTPS站点自行替换前缀
  echo "${cache_path/\.\/site_cache\//http://}"
done | sort | uniq > matched_urls.txt

匹配正则模式

添加-E参数启用正则匹配,替换正则规则为你的实际匹配逻辑:

grep -rlE "正则规则" ./site_cache/ | while read cache_path; do
  echo "${cache_path/\.\/site_cache\//http://}"
done | sort | uniq > matched_urls.txt

筛选完成后所有符合要求的URL会存储在matched_urls.txt中。

方案2:逐URL请求检查(适合小规模站点,无需本地缓存)

直接使用你原有命令生成的all_urls.txt逐页请求匹配:

cat all_urls.txt | while read url; do
  # 匹配正则时给grep添加-E参数即可
  curl -s "$url" | grep -q "目标文本/正则" && echo "$url"
done > matched_urls.txt

注意:该方案会重复发起HTTP请求,站点规模较大时速度慢,且有触发IP封禁的风险

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:15:02