Sagen Sie wget, dass die Spinnen-URL nicht zu einem Muster passt?

8

Ich möchte testen, wie sich meine Website beim Spinnen verhält. Ich möchte jedoch alle URLs ausschließen, die das Wort "Seite" enthalten. Ich habe es versucht:

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

Das -RFlag soll ein URL-Muster ablehnen, das das Wort "Seite" enthält. Nur dass es nicht zu funktionieren scheint:

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

Wie schließe ich das Spinnen einer solchen URL aus?

Fragenüberlauf
quelle

Antworten:

10

Nach einigem Ausprobieren wird mir klar, dass die Lösung einfach so zu verwenden ist --reject-regex:

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

Der urlregex darf keinen Platzhalter enthalten und ist daher *page*ungültig, ist es aber page.

Fragenüberlauf
quelle
1

Von man wget:

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

Diese Option lehnt nur Dateien ab , die dem Muster entsprechen.

Genau genommen ist Ihre URL pageein Anforderungsparameter, nicht der letzte Teil des Pfads (z. B. Dateiname).


Möglicherweise möchten Sie alle gefundenen URLs sichern (z. B. das Protokoll nach allen heruntergeladenen URLs durchsuchen), die URLs entfernen, die Sie nicht zufrieden stellen (z. B. mit grep -v), und schließlich die verbleibenden URLs von wget abrufen lassen. Zum Beispiel:

# 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

Möglicherweise möchten Sie andere wget-Optionen (z. B. --no-check-certificate) entsprechend Ihren Anforderungen hinzufügen.

hellodanylo
quelle
Ich habe das Handbuch einige Male gelesen. Wie Sie sehen können, heißt es "Dateinamensuffixe oder Muster", daher ist nicht klar, ob das Muster ein Dateiname sein muss. Trotzdem suche ich nach einer Lösung, die das Ausschließen eines bestimmten URL-Musters ermöglicht.
Frage Überlauf
@QuestionOverflow Ein Beispiel dafür finden Sie in der Bearbeitung.
hellodanylo
Ihre zweite Option würde die gesamte Site spinnen und alles herunterladen. Dann würde es fast alles ein zweites Mal herunterladen. Es wäre effizienter, alles herunterzuladen und dann die Teile zu löschen, die Sie nicht zufrieden stellen.
Dhasenan