パターンに一致するURLをスパイダーしないようにwgetに指示しますか?


8

スパイダーされたときのサイトの動作をテストしたい。ただし、「ページ」という単語を含むすべてのURLを除外します。私は試した:

$ wget -r -R "*page*" --spider --no-check-certificate -w 1 http://mysite.com/

この-Rフラグは、「ページ」という単語を含むURLパターンを拒否することになっています。それが機能していないように見えることを除いて:

Spider mode enabled. Check if remote file exists.
--2014-06-10 12:34:56--  http://mysite.com/?sort=post&page=87729
Reusing existing connection to [mysite.com]:80.
HTTP request sent, awaiting response... 200 OK

このようなURLのスパイダーを除外するにはどうすればよいですか?

回答:


10

試行錯誤を繰り返した結果、解決策は次の--reject-regexように使用することです。

wget -r --reject-regex page --spider --no-check-certificate -w 1 http://mysite.com/

urlregexにはワイルドカードを含めることはできません。そのため*page*無効ですが、ワイルドカードは無効pageです。


1

からman wget

-R rejlist --reject rejlist
           Specify comma-separated lists of file name suffixes or patterns to
           accept or reject.

このオプションは、パターンに一致するファイルのみを拒否します

厳密に言うと、URLにpageはリクエストパラメータがあり、パスの最後の部分(ファイル名など)ではありません。


wgetで見つかったすべてのURLをダンプし(たとえば、ダウンロードされたすべてのURLのログをgrepで)、満足できないURLを(たとえば、grep -vで)削除し、最後にwgetで残りのURLを取得します。例えば:

# dump the whole website
wget ... -P dump -o wget.log  ...

# extract URLs from the log file
cat wget.log | grep http | tr -s " " "\012" | grep http >urls

# excludes URLs with the word page anywhere in it
cat urls | grep -v page >urls 

# delete previous dump, since it probably contains unwanted files
rm -rf dump

# Fetch URLs
cat urls | xargs wget -x

必要に応じて、他のwgetオプション(--no-check-certificateなど)を追加することもできます。


マニュアルを何回か読みました。ご覧のとおり、「ファイル名のサフィックスまたはパターン」と書かれているため、パターンがファイル名である必要があるかどうかは明確ではありません。それでも、特定のURLパターンを除外できるソリューションを探しています。
質問のオーバーフロー2014年

@QuestionOverflowこれを行う方法の一例については、編集を参照してください。
hellodanylo 2014年

2番目のオプションは、サイト全体をスパイダーし、すべてをダウンロードします。次に、ほぼすべてのものが2回目にダウンロードされます。すべてをダウンロードして、満足できない部分を削除する方が効率的です。
dhasenan 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.