wget 递归处理不带扩展名的文件

wget 递归处理不带扩展名的文件

我正在尝试获取一个带有wget.问题在于:

  1. 为页面提供用户友好的名称

    http://domain/wiki/Section/Home, 
    http://domain/wiki/Section/Not+Home
    http://domain/wiki/Section/Other+page
    
  2. 对于某些页面,它使用查询字符串:

    http://domain/wiki/Section/Home?one=value&other=value
    
  3. 由于某种原因,可能备份某些文件的扩展名是.1(数字 1 - n)例如styles.css.1javascrip.js.2

我想进行递归下载并将其存储在一个文件夹中,但避免带有查询的文件;Home?query- 在这种情况下Home。为此,我尝试了--reject一种模式,但无法使其发挥作用。

.1,.2,... .n如果我添加一长串数字,我可以避免扩展,但希望有更好的方法。

这是wget

wget \
--page-requisites \
--no-parent \
--no-host-directories \
--no-directories \
--convert-links \
--load-cookies wget_cookies.txt --cookies=on --keep-session-cookies \
-P WikiFolders/pages/ \
-e robots=off \
-r \
--reject='1,2,3,4,5,6,7,8,9,*\\?*' \
--content-disposition \
--no-check-certificate \
http://domain/wiki/Section/

如果我以这种方式运行它,我确实可以访问该网站,但某些内容的速度确实很慢。

注意:为了避免带有查询的文件,我尝试过,*\\?*但这不起作用。

下载后,我删除内容:

find WikiFolders/pages/ -iname "*\\?*" -delete

但同样,这真的很慢,我必须下载很多内容。

我曾考虑过首先排除HTML并下载图像、CSS 和 js,并使用其他 wget HTML,但由于文件没有扩展名,因此这是行不通的。

答案1

您可以使用[]符号来指定数字和字母的范围。重复多个。

*[0-9],*[0-9][0-9],*[0-9][0-9][0-9]
|____||__________||_______________|
   |       |              |
   |       |              +---------- Reject ending with 000 to 999
   |       +------------------------- Reject ending with 00 to 99
   +--------------------------------- Reject ending with 0 to 9

这也可以与 一起使用--accept

对于查询链接,无法将其过滤掉 - 但是,如果您指定, *\?*文件将被删除它们已被下载。因此,您将不得不忍受它使用带宽和下载时间,但您不必事后进行清理。

所以,summa summarum,也许是这样的:

--reject='*.[0-9],*.[0-9][0-9],*\?*'

如果这还不够,您将不得不研究其他工具,例如中提到的工具可能重复您问题下的链接。

答案2

您可以避免使用该--reject-regex "(.*)\?(.*)"选项下载查询链接,如所述使用wget但忽略url参数 - Thinbug

相关内容