Yorumumda söylediğim gibi, HTML'yi Normal İfadeler ile ayrıştırmak genellikle iyi bir fikir değildir, ancak ayrıştırdığınız HTML iyi davranıyorsa bazen bundan kurtulabilirsiniz.
Yalnızca öğelerin hrefniteliğindeki URL'leri almak <a>için, bunu birden çok aşamada yapmanın en kolay yolunu bulurum. Yorumlarınızdan, tam URL'yi değil, yalnızca üst düzey alan adını istediğiniz gibi görünüyor. Bu durumda şöyle bir şey kullanabilirsiniz:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
source.htmlayrıştırılacak HTML kodunu içeren dosya nerede .
Bu kod, her satırdaki öğelerin hrefözniteliği olarak ortaya çıkan tüm üst düzey URL'leri yazdırır <a>. -iİlk seçenek grepkomutuna hem üzerinde çalışacak sağlamaktır <a>ve <A>elemanları. Ben de büyük harf öznitelikleri, OTOH yakalamak -iiçin 2 de verebilir sanırım , böyle kırık HTML göz ardı tercih ederim. :)grepHREF
İçeriğini işlemek http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
çıktı
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
Avustralya Google sayfasına yönlendirildiğim için çıktım diğer örneklerden biraz farklı.