パターンに一致するURLをクロールしないようにwgetに指示しますか?

パターンに一致するURLをクロールしないようにwgetに指示しますか?

私のウェブサイトがスパイダーによってクロールされたときにどのように機能するかをテストしたいと思います。ただし、「ページ」という単語を含むすべての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がスパイダーによってクロールされないように除外する方法は?

答え1

--reject-regexいくつかの試行錯誤の後、私は次のように使用することが解決策であることに気づきました。

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

urlregexにはワイルドカードを含めてはいけませんので*page*効果はありませんがpage効果があります。

答え2

からman wget

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

このオプションは拒否のみ実行されます。文書パターンと一致します。

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


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など)を追加する必要があります。

関連情報