如何使用wget结合正则表达式获取同前缀嵌套URL列表
解决方法:提取指定前缀的嵌套URL
我明白你的需求啦——从https://mysite/a出发,抓取所有以这个URL为前缀的嵌套链接(比如https://mysite/a/b、https://mysite/a/c/d这类),但之前的wget命令输出了太多冗余日志,很难直接拿到干净的URL列表。下面给你几个更高效的方案:
方案一:一步到位提取URL
直接调整wget参数,结合文本过滤命令,一次性输出你需要的URL:
wget -r --spider --quiet --accept-regex "^https://mysite/a.*" "https://mysite/a" 2>&1 | grep -E '^--.*-- https://mysite/a' | awk '{print $3}'
参数解释:
-r --spider:保持递归爬取的特性,同时只检查URL有效性不下载文件--quiet:关闭大部分冗余日志,只保留包含URL的关键行--accept-regex "^https://mysite/a.*":精准匹配以https://mysite/a开头的URL,确保只抓取目标前缀的嵌套链接2>&1:把错误输出重定向到标准输出,让所有内容能被后续命令处理grep -E '^--.*-- https://mysite/a':过滤出包含目标URL的日志行awk '{print $3}':提取每行里的第三个字段,也就是我们需要的完整URL
如果想把结果保存到文件,只需要在命令末尾加上 > target_urls.txt即可。
方案二:先生成日志再过滤
如果需要保留原始日志,也可以先让wget把所有内容写入文件,再从中提取URL:
- 生成原始日志文件:
wget -r --spider --force-html --output-file=raw_logs.txt "https://mysite/a"
- 从日志中过滤出目标URL:
grep -E '^--.*-- https://mysite/a' raw_logs.txt | awk '{print $3}' > filtered_urls.txt
执行后,filtered_urls.txt里就只有你需要的所有同前缀嵌套URL了。
内容的提问来源于stack exchange,提问作者user1592380
相关产品推荐
相关产品推荐

