我正试图使用wget来优雅地&礼貌地从网站上下载所有pdf。pdf位于起始URL下的各个子目录中。似乎-A pdf选项与-r选项冲突。但我不是wget专家!此命令:
wget -nd -np -r site/path
忠实地遍历整个站点下载路径下游的所有内容(不礼貌!(。此命令:
wget -nd -np -r -A pdf site/path
在没有下载任何内容的情况下立即完成。在调试模式下运行相同的命令:
wget -nd -np -r -A pdf -d site/path
显示子目录被忽略,并显示调试消息:
决定是否将";https://site/path/subdir1"。https://site/path/subdir1(subdr1(与acc/rej规则不匹配。决定不加载。
我认为这意味着子目录不满足;pdf";过滤器和被排除在外。有没有一种方法可以让wget递归到子目录(随机深度(中,并且只下载pdfs(到单个本地目录中(?或者wget需要下载所有内容,然后我需要手动过滤pdf?
更新:感谢大家的想法。解决方案是使用两步方法,包括修改版本:http://mindspill.net/computing/linux-notes/generate-list-of-urls-using-wget/
UPDATE:感谢大家的想法。解决方案是使用两步方法,包括修改版本:http://mindspill.net/computing/linux-notes/generate-list-of-urls-using-wget/
试试这个
1( "-l"开关指定wget从指定的主URL向下移动一级。很明显,你可以将其切换到你想要关注的链接中的级别。
wget -r -l1 -A.pdf http://www.example.com/page-with-pdfs.htm
有关的更多详细信息,请参阅man wget
如果以上不起作用,请尝试此
验证网站的TOS是否允许对其进行爬网。然后,一个解决方案是:
机械转储--链接http://example.com'|grep pdf$|sed的s/\s+/%20/g'|xargs-I%wgethttp://example.com/%mech-dump命令附带Perl的模块WWW::Mechanical(debian&debian上的libwww Mechanize Perl包喜欢发行版
用于安装机械卸载
sudo apt-get update -y
sudo apt-get install -y libwww-mechanize-shell-perl
github回购https://github.com/libwww-perl/WWW-Mechanize
- 我还没有测试过这个,但你仍然可以尝试一下,我认为你仍然需要找到一种方法来获取网站的所有URL,并通过管道连接到我提供的任何解决方案
您需要安装wget和lynx:
sudo apt-get install wget lynx
为这个示例准备一个脚本名称pdflinkextractor
#!/bin/bash
WEBSITE="$1"
echo "Getting link list..."
lynx -cache=0 -dump -listonly "$WEBSITE" | grep ".*.pdf$" | awk '{print $2}' | tee pdflinks.txt
echo "Downloading..."
wget -P pdflinkextractor_files/ -i pdflinks.txt
运行文件
chmod 700 pdfextractor
$ ./pdflinkextractor http://www.pdfscripting.com/public/Free-Sample-PDF-Files-with-scripts.cfm