在过去的 8 个小时里,我一直在爬行各种文章,但没有取得太大进展。我尝试过 httrack、wget、lynx 和 cURL。
我是一个高级会员的网站,一旦付费,就可以快速下载内容,而免费会员则可以慢速下载内容。所有链接均由服务器生成,为一次性下载链接,杜绝链接共享。
大约 3 小时后,我设法弄清楚如何让 wget 保存我的 cookie 文件。现在我的问题是当我尝试下载文件时。以下 wget 命令下载所有产品页面,但不下载实际文件。每个单独的页面上都有一个<a>
链接到可下载文件的标签,但 wget 不会抓取这些标签。
wget --mirror --adjust-extension --page-requisites --execute=robots=off --wait=30 --random-wait --convert-links --user-agent=Mozilla --no-parent --recursive --load-cookies=my-cookies.txt --no-clobber https://www.mysite.net/directory/product
我有一种感觉,这是我所缺少的简单的东西。毕竟,我已经努力让它工作了 8 个多小时。 :/
编辑:我尝试按照 Anthon 的建议关闭 Javascript,但 Javascript 似乎在下载文件时没有发挥任何作用。进一步检查网站代码显示使用了一个简单的 url 标签,<a>
.
答案1
我使用 cliget (一个 Firefox 插件),它可以为 wget 和 cURL 创建命令行,然后可以在命令行上使用它们。看看这是否有效:
https://addons.mozilla.org/en-US/firefox/addon/cliget/
这可能不起作用的一个原因(正如@Anthon指出的)是下载链接实际上正在执行一些计算实际文件位置的javascript - 捕获该调用是解决方案。对于这种类型的自动下载,可以使用 selenium + python - 虽然有点复杂的方法并且可能不适合这个网站。
答案2
您可以尝试添加 wget 选项-H
或长格式
--span-hosts
因此您--recursive
允许 wget 从 href 中给出的第二个站点获取文件<a>
。你也可以尝试
--referer=originurl
其中 originurl 是包含所有锚点的页面的完整 url。