使用wget将URL附加到输出文件

时间:2013-09-11 15:32:34

标签: wget batch-processing

我正在使用wget从输入文件中读取一批url并将所有内容下载到单个输出文件中,并且我想在下载内容之前附加每个url,任何人都知道如何操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

afaik wget不直接支持您正在构想的用例。但是,使用标准工具,您可以模拟此功能。

我们将按如下方式进行:

  • 在启用日志记录的情况下致电wget
  • sed处理执行下面详述的脚本的日志
  • 将转换结果作为shell /批处理脚本执行

约定:使用以下文件名:

  • wgetin.txt:包含要​​使用wget
  • 获取的网址的文件
  • wgetout.sed:sed脚本
  • wgetout.final:最终结果
  • wgetass.sh/.cmd:shell / batch脚本,用于汇编在url数据中编织的下载文件
  • wget.log:wget调用的日志文件

的Linux

sed脚本(linux):

# delete lines _not_ matching the regex
/^\(Saving to: .\|--[0-9: \-]\+--  \)/! { d; }

# turn remaining content into something else
s/^--[0-9: \-]\+--  \(.*\)$/echo '\1\n' >>wgetout.final/
s/^Saving to: .\(.*\).$/cat '\1' >>wgetout.final/

命令行(linux):

rm wgetout.final | rm wgetass.sh | wget -i wgetin.txt -o wget.log | sed -f wgetout.sed -r  wget.log >wgetass.sh | chmod 755 wgetass.sh | ./wgetass.sh

Windows批处理脚本的语法略有不同。当然,必须首先安装wget和sed的windows端口。

sed脚本(windows):

# delete lines _not_ matching the regex
/^\(Saving to: .\|--[0-9: \-]\+--  \)/! { d; }

# turn remaining content into something else
s/^--[0-9: \-]\+--  \(.*\)$/echo "\1" >>wgetout.final/
s/^Saving to: .\(.*\).$/type "\1" >>wgetout.final/

命令行(windows):

del wgetout.final && del wgetass.cmd && wget -i wgetin.txt -o wget.log && sed -f wgetout.sed -r  wget.log >wgetass.cmd && wgetass.cmd