パラメータ付きのリンクをたどらずにwgetでダウンロードする方法


7

CDに含める2つのサイトをダウンロードしようとしています。

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

私が抱えている問題は、これらが両方ともウィキであることです。したがって、たとえば次のようにダウンロードする場合:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

...?action = edit ...?action = diff&version = ...のようなリンクもたどるので、たくさんのファイルを取得します

誰かがこれを回避する方法を知っていますか?

画像なし、差分なしなど、現在のページだけが必要です。

PS:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

これはバークレーで機能しましたが、boinc-wiki.infoはまだ問題を引き起こしています:/

PPS:

私は最も関連性の高いページのように見えるものを得ました:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info

スーパーユーザとserverfaultの間のクロスポストする必要はありませんsuperuser.com/questions/158318/...
ブライアン

どこに投稿すればよいですか?
タイファイター

回答:


7
wget --reject-regex '(.*)\?(.*)' http://example.com

--reject-type posixデフォルト)。wget他のコメントによると、最近のバージョン(> = 1.14)でのみ機能します。

通話--reject-regexごとに1回しか使用できないようですwget。つまり、|複数の正規表現を選択する場合は、単一の正規表現で使用する必要があります。

wget --reject-regex 'expr1|expr2|…' http://example.com

2
wgetの正規表現は最初と最後に固定されていないため、最初の例でwget --reject-regex '\?' http://example.comは十分です。
ステフェイン・グーリッホン

4

wgetドキュメンテーションは言う:

また、クエリ文字列(疑問符( '?')で始まるURLの末尾の文字列)は、受け入れ/拒否ルールのファイル名の一部として含まれていないことに注意してください。ローカルファイル。Wgetの将来のバージョンでは、クエリ文字列との照合を許可するオプションが提供される予定です。

この機能はしばらくの間検討されており、何も行われていないようです。

私は使用していませんが、httrackはwgetよりも強力なフィルタリング機能セットを備えているようで、探しているものにより適しているようです(フィルターについては、http://www.httrack.com/htmlを参照してください)。 /fcguide.html)。


httrackを参照するための+1。wgetよりも見た目が良く、wgetは停滞しているように見えます。
Stefan Lasiewski、2010年

Winhttrackを試しましたが、動作がおかしいです。それはファイルをダウンロードし、それをしてはいけないディレクトリを横断します:/
タイファイター

多分ある日wgetは修正されるでしょう。現時点では、httrackとpavukはどちらも問題ありません。
joeytwiddle

3

新しいバージョンのwget(v.1.14)は、これらの問題をすべて解決します。

--reject-regex=....クエリ文字列を処理するには、新しいオプションを使用する必要があります。

これらの新しいオプションを含む新しいマニュアルが見つからなかったので、helpコマンドを使用する必要があることに注意してください。 wget --help > help.txt


1

パヴックはそれを行うことができるはずです:

http://pavuk.sourceforge.net/man.html#sect39

Mediawikiの例:

[...]

-skip_url_pattern ' oldid =action = editaction = historydiff =limit =[/ =] User:[/ =] User_talk:[^ p] / Special:= Special:[^ R].PHP /特別:[^ LUA] [^ ONL] [^ NUL] MediaWikiの:検索:ヘルプ: "

[...]


1

MediaWikiの特別なページのダウンロードを回避しようとしているようです。index.phpページを回避したら、この問題を解決しました:

wget  -R '*index.php*'  -r ... <wiki link>

ただし、WikiはWikipedia(http://<wiki>/en/Theme)にあるURLを使用し、他の場所(http://<wiki>/index.php?title=Theme)で見たパターンは使用しませんでした。あなたが与えたリンクはWikipediaパターンのURL 使用しているのでこの解決策はあなたにも役立つと思います。


0

'-R rejlist --reject rejlist'受け入れるか拒否するファイル名のサフィックスまたはパターンのコンマ区切りリストを指定します(ファイルのタイプを参照)。ワイルドカード文字「*」、「?」、「[」または「]」のいずれかがacclistまたはrejlistの要素にある場合、それはサフィックスではなくパターンとして扱われることに注意してください。

パターンはおそらくあなたが望むものです。パターンがどれほど洗練されているかはわかりませんが、特定のファイルのみを受け入れるか、ブロックすることができます。

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif,*\? http://www.boinc-wiki.info/

受け入れる:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

編集:他の投稿に照らしてnvm。


これはクエリ文字列で機能しますか?私が使用したすべてのバージョンのwgetは、拒否リストのパターンをURLのファイル部分にのみ適用します。試してみます。
エヴァンアンダーソン、

私はそれをテストしていません。ドキュメントを調べたところです。私はそれがシェルの慣習を使用していることを見つけましたが、あなたの経験はマッチングの作業関数に関して私のものよりも話すでしょう。
ジョシュアエンフィールド

「?」をエスケープする wgetがwget 1.11.4を実行している私のCentOS 5.3ボックスでOPが望むように動作しないようです。
エヴァンアンダーソン、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.