Seperti yang saya katakan di komentar saya, umumnya bukan ide yang baik untuk mem-parsing HTML dengan Ekspresi Reguler, tetapi Anda kadang-kadang bisa lolos jika HTML yang Anda parsing berperilaku baik.
Untuk hanya mendapatkan URL yang ada dalam href
atribut <a>
elemen, saya merasa paling mudah untuk melakukannya dalam beberapa tahap. Dari komentar Anda, sepertinya Anda hanya menginginkan domain tingkat atas, bukan URL lengkap. Dalam hal ini Anda dapat menggunakan sesuatu seperti ini:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
di mana source.html
file yang berisi kode HTML untuk diuraikan.
Kode ini akan mencetak semua URL tingkat atas yang terjadi sebagai href
atribut dari setiap <a>
elemen di setiap baris. The -i
pilihan untuk pertama grep
perintah adalah untuk memastikan bahwa ia akan bekerja pada kedua <a>
dan <A>
elemen. Saya kira Anda juga bisa memberi -i
ke-2 grep
untuk menangkap HREF
atribut huruf besar , OTOH, saya lebih suka mengabaikan HTML yang rusak. :)
Untuk memproses isi http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
keluaran
http://www.google.com.au
http://maps.google.com.au
https://play.google.com
http://www.youtube.com
http://news.google.com.au
https://mail.google.com
https://drive.google.com
http://www.google.com.au
http://www.google.com.au
https://accounts.google.com
http://www.google.com.au
https://www.google.com
https://plus.google.com
http://www.google.com.au
Keluaran saya sedikit berbeda dari contoh lain ketika saya diarahkan ke halaman Google Australia.