1

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

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

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

有没有办法wget做到这一点?或者有更好的方法吗?

4

2 回答 2

2

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

我使用的工具是httrack

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

甚至还有一个 -%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']
于 2013-09-24T19:47:47.687 回答
1

目前尚不清楚您是否要使用 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
于 2013-09-24T18:59:44.977 回答