如何自动下载文件?

如何自动下载文件?

我得到了一本书,里面有通行证可以访问书中大部分艺术品的高分辨率扫描数字版本。太棒了!不幸的是,所有这些的呈现方式是 177 页,每页 8 张图片,每张图片都带有指向 jpg 的 zip 文件的链接。浏览起来非常乏味,我希望能够一次获得所有文件,而不是坐下来逐个点击。

archive_bookname/index.1.htm - archive_bookname/index.177.htm 每个页面都有 8 个文件链接

链接到诸如<snip>/downloads/_Q6Q9265.jpg.zip<snip>/downloads/_Q6Q7069.jpg.zip、之类的文件<snip>/downloads/_Q6Q5354.jpg.zip,但这些文件没有完全按顺序排列。我无法获取父/downloads/文件夹的目录列表。

此外,该文件位于登录墙后面,因此如果不知道如何重新创建会话信息,使用非浏览器工具可能会很困难。

我对 wget 进行了一些研究,但我很困惑,不知道它是否能帮助我解决这个问题。有什么建议可以解决这个问题吗?wget 可以自动帮我完成这个吗?

答案1

您可以使用以下方式指定输入 html 文件

wget -F -i <file>

因此您只需转储 html 文件并循环遍历它们即可
(我为相对链接添加了一个基本 url):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

或者

您可以通过任何方法将链接转储到文件(以换行符分隔)并执行以下操作:

wget -i <url-file>

获取这些链接的一个好方法是:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

可能在附加到“url-file”的 for 循环中

答案2

使用 python 可能更简单。所以这是一个使用 python 的解决方案。如果 python 不适合你,那么请忽略。:)

我认为抓取该网站是合法的。

编写一个简单的 Python 脚本来循环遍历archive_bookname/index.1-177.htm并使用美丽的汤,使用 css 类选择器或简单的正则表达式匹配来定位链接,然后使用urllib.urlretrieve()获取文件。这就是我的做法。

答案3

或者您可以直接使用 Perl 及其出色的模块 www::mechanize。将某些东西组合在一起非常简单,而且官方 CPAN 文档中有大量示例。

相关内容