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

しかし、今回も速度が本当に遅く、多くのコンテンツをダウンロードする必要があります。

まず、画像、CSS、およびjsを除いてダウンロードし、追加のwget HTMLを使用する方法を考えましたが、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

クエリリンクの場合、フィルタリングする方法はありません。ただし、指定すると*\?*ファイルが削除されます。後ろにダウンロードしました。したがって、帯域幅とダウンロード時間を使用して生活する必要がありますが、後で整理する必要はありません。

要約すると、おそらく次のようになります。

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

これが十分でない場合は、前述のツールなどの他のツールを見てください。冗長性あなたの質問の下にリンクを歩いてください。

おすすめ記事