使用WGET -m归档网站时如何排除域名后带/?p=的页面
WGET镜像归档时排除根路径
/?p=类页面的实现方法 你提到的-X(目录排除)、-R(后缀拒绝)参数确实无法匹配这类带查询字符串的根路径动态页面,正确的实现方式是使用wget自带的正则拒绝参数--reject-regex,该参数支持对完整URL做正则匹配,命中规则的链接会被直接过滤,不会发起下载请求。
具体命令
基础过滤(匹配所有路径中包含/?p=的URL):
wget -m --reject-regex "/\?p=" https://www.domain.com/
注意:正则里的
?是正则元字符,必须加反斜杠转义才能匹配字面意义的问号。
如果需要更精准的匹配,只过滤域名根路径下的?p=页面,不误伤子目录下同参数的页面(比如/category/?p=2这类),可以写完整域名匹配规则:
wget -m --reject-regex "^https?://www\.domain\.com/\?p=" https://www.domain.com/
使用时把www.domain.com替换成你实际要归档的目标域名即可。
补充说明
- 该过滤规则生效在链接抓取阶段,不会提前下载命中页面再删除,归档效率和
-X/-R参数一致 - 如果使用过程中发现部分带参数链接漏过滤,可以给wget加上
--no-parent参数限制只爬取目标站点下的内容,避免跨域或跨目录的异常匹配 - 不推荐用
--accept-regex写反向白名单规则实现相同效果,规则维护成本远高于直接拒绝匹配的模式
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

