wget递归和文件提取



我正试图使用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

  1. 如果以上不起作用,请尝试此

    验证网站的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

  1. 我还没有测试过这个,但你仍然可以尝试一下,我认为你仍然需要找到一种方法来获取网站的所有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

相关内容

  • 没有找到相关文章

最新更新