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 href
niteliğ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.html
ayrış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 grep
komutuna hem üzerinde çalışacak sağlamaktır <a>
ve <A>
elemanları. Ben de büyük harf öznitelikleri, OTOH yakalamak -i
için 2 de verebilir sanırım , böyle kırık HTML göz ardı tercih ederim. :)grep
HREF
İç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ı.