尝试确定给定域下的所有有效 url,而无需在本地镜像站点。
人们通常想下载所有页面,但我只想获取给定域(例如www.example.com
)下的直接 url 列表,这类似于
www.example.com/page1
www.example.com/page2
- 等等
有没有办法wget
做到这一点?或者有更好的方法吗?
好的,我必须找到自己的答案:
我使用的工具是httrack。
httrack -p0 -r2 -d www.example.com
甚至还有一个 -%L 可以将扫描的 URL 添加到指定的文件中,但它似乎不起作用。但这不是问题,因为在 hts-cache 目录下,您可以找到一个名为new.txt的TSV文件,其中包含所有访问过的 url 以及一些关于它的附加信息。我可以使用以下 python 代码从中提取 URL:
with open("hts-cache/new.txt") as f:
t = csv.DictReader(f,delimiter='\t')
for l in t:
print l['URL']
目前尚不清楚您是否要使用 wget 来确定这些 URL,但要回答有关不保存站点的问题,您可以使用“--output-document=file”或简单地使用“-O file”。
wget -O /dev/null <your-site>
如果您有一个 URL 列表,并且想要检查它们是否有效,您可以检查大于 0 的退出代码。即
while read URL
do
wget -O /dev/null $URL >/dev/null 2>&1
[ $? -gt 0 ] && echo "ERROR retrieving $URL"
done < your-URL-list.txt