我得到了一本书,里面有通行证可以访问书中大部分艺术品的高分辨率扫描数字版本。太棒了!不幸的是,所有这些的呈现方式是 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 文档中有大量示例。