Katakan jangan sampai spider URL cocok dengan suatu pola?

8

Saya ingin menguji bagaimana situs saya akan berperilaku ketika jelajahi. Namun, saya ingin mengecualikan semua URL yang mengandung kata "halaman". Saya mencoba:

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

The -Rbendera seharusnya menolak pola URL yang mengandung kata "halaman". Kecuali bahwa itu tampaknya tidak berhasil:

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

Bagaimana cara mengecualikan spidering URL tersebut?

Pertanyaan Melimpah
sumber

Jawaban:

10

Setelah beberapa percobaan dan kesalahan, saya menyadari solusinya adalah dengan menggunakan --reject-regexseperti ini:

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

Urlregex tidak boleh berisi wildcard dan karenanya *page*tidak valid, tetapi pageitu.

Pertanyaan Melimpah
sumber
1

Dari man wget:

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

Opsi ini hanya akan menolak file yang cocok dengan pola.

Sebenarnya, di URL Anda pageadalah parameter permintaan, bukan bagian terakhir dari jalur (mis. Nama file).


Anda mungkin ingin membuang semua URL yang ditemukan wget (mis. Ambil log untuk semua URL yang diunduh), hapus URL-URL yang tidak memuaskan Anda (dengan grep -v, misalnya) dan akhirnya buatlah wget mengambil kembali URL yang tersisa. Sebagai contoh:

# 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

Anda mungkin ingin menambahkan opsi wget lainnya (mis. - tidak-periksa-sertifikat) sesuai dengan kebutuhan Anda.

hellodanylo
sumber
Saya memang membaca manual beberapa kali. Seperti yang Anda lihat, ia mengatakan "akhiran nama file atau pola", jadi tidak jelas apakah pola itu harus nama file. Namun demikian, saya mencari solusi yang memungkinkan pengecualian pola URL tertentu.
Pertanyaan Overflow
@QuestionOverflow Lihat hasil edit untuk satu contoh bagaimana Anda dapat melakukannya.
hellodanylo
Opsi kedua Anda akan spider seluruh situs, mengunduh semuanya. Maka itu akan mengunduh hampir semuanya untuk kedua kalinya. Akan lebih efisien untuk mengunduh semuanya dan kemudian menghapus bagian-bagian yang tidak memuaskan Anda.
dhasenan