我试图找到一种使用wget将重定向的网站URL列表记录到一个文件中的方法。例如:
www.website.com/1234现在重定向到www.newsite.com/a2as4sdf6nonsense
和
www.website.com/1235现在重定向到www.newsite.com/ab6haq7ah8nonsense
Wget会输出重定向,但不会记录新位置。我在终端中得到了这个:
HTTP request sent, awaiting response...301 moved permanently
Location: http.www.newsite.com/a2as4sdf6 ..。
我只想将新的URL捕获到一个文件中。
我使用的是这样的东西:
for i in `seq 1 9999`; do
wget http://www.website.com/$i -O output.txt
done但这会将每个网页的源码输出到该文件。我正在尝试只检索重定向信息。此外,每当输出文件检索到新的URL时,我都会向该输出文件中添加新的一行。
我希望输出看起来像这样:
www.website.com/1234 www.newsite.com/a2as4sdf6nonsense
www.website.com/1235 www.newsite.com/ab6haq7ah8nonsense..。
发布于 2012-08-09 16:01:00
这不是一个完美的解决方案,但它是有效的:
wget http://tinyurl.com/2tx --server-response -O /dev/null 2>&1 |\
awk '(NR==1){SRC=$3;} /^ Location: /{DEST=$2} END{ print SRC, DEST}'在这方面,wget不是一个完美的工具。curl会更好一点。
它是这样工作的:我们得到url,但是我们将所有的输出(页面内容)重定向到/dev/null。我们请求服务器响应http头(以获取Loaction头),然后将其传递给awk。我以为你想要最后一个。Awk从第一行(NR==1)获取您请求的URL,并从每个Location头获取目标URL。
https://stackoverflow.com/questions/11110601
复制相似问题