使用wget下载在给定域下可访问的所有Url而不保存实际页面?

时间:2013-09-24 18:37:37

标签: linux bash unix

尝试确定给定域下的所有有效URL,而不在本地镜像站点。

人们通常希望下载所有页面,但我只想获取给定域名下的直接网址列表(例如www.example.com),这类似于

  • www.example.com/page1
  • www.example.com/page2

有没有办法使用wget来执行此操作?还是有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

好的,我必须找到自己的答案:

我使用的工具是 httrack

httrack -p0 -r2 -d www.example.com
  • -p0 选项告诉它只扫描(不保存页面);
  • -rx 选项告诉它搜索的深度
  • -d 选项告诉它保持在同一主体域

甚至还有 - %L将扫描的URL添加到指定的文件,但它似乎不起作用。但这不是问题,因为在hts-cache目录下,您可以找到名为 new.txt TSV 文件,其中包含所有访问过的网址以及有关它的一些其他信息。我可以使用以下python代码从中提取URL:

with open("hts-cache/new.txt") as f:
    t = csv.DictReader(f,delimiter='\t')
    for l in t:
        print l['URL']

答案 1 :(得分:1)

目前还不清楚是否要使用wget来确定这些网址,但要回答有关不保存网站的问题,可以使用“--output-document = file”或简单地使用“-O file”。

wget -O /dev/null <your-site>

如果你有一个URL列表,并想检查它们是否有效,你可以检查一个大于0的退出代码.I.e。

while read URL
do
  wget -O /dev/null $URL >/dev/null 2>&1
  [ $? -gt 0 ] && echo "ERROR retrieving $URL"
done < your-URL-list.txt