Link (href) Çıkarıcı
HTML kaynağını yapıştırın, içindeki her bağlantıyı ayıklayın — tüm href adresleri, tekrarsız ve her satıra bir tane; kopyala veya indir.
1.045 görüntülenme
0 benzersiz bağlantı
Bağlantı bulunamadı.
Nasıl Çalışır
HTML kaynağını yapıştırın — kaynağı görüntüle çıktısı, kaydedilmiş bir .html dosyası veya kopyalanmış herhangi bir parça — ve araç bu metni elle yazılmış bir düzenli ifade (regex) yerine tarayıcının kendi HTML ayrıştırıcısına teslim eder. Bu fark göründüğünden daha önemlidir. Gerçek dünyadaki HTML, saf bir regex'in zorlandığı şekillerde dağınıktır: bir öznitelik çift tırnak, tek tırnak veya hiç tırnak olmadan yazılabilir (href=about.html teknik olarak geçerli HTML'dir), bir etiket kendi kendini kapatabilir ya da kapatmayabilir, etiketler birçok seviye iç içe geçebilir, birden fazla satıra yayılabilir veya kendi içinde açı parantezi barındıran yorumlar ile <script> bloklarının içinde bulunabilir. Tarayıcı sınıfı bir ayrıştırıcı, bu uç durumların her birini yıllar içinde özümsemiştir — çünkü kendisine verilen sayfayı, işaretleme ne kadar bozuk olursa olsun render etmek zorundadır. Çıkarıcıyı etiketler için ayrıştırma mantığını yeniden icat etmek yerine bu aynı motor üzerine kurmak, sizin yazmadığınız işaretleme üzerinde — kazınmış bir rakip sayfası veya eski bir kampanya dışa aktarımı gibi — güvenilir olmasını sağlayan şeydir.
Ayrıştırıcı yapıştırılan işaretlemeden yapısal bir ağaç oluşturduktan sonra, her <a> öğesinin href'i, bir metin dizisinden çekilen ham metin olarak değil, doğrudan o öğenin bir özelliği olarak okunur — bu da tırnak tuhaflıklarını ve bir örüntü eşleşmesini yanıltabilecek yorumlar içindeki başıboş açı parantezlerini baştan devre dışı bırakır. Ortaya çıkan URL listesi ardından tekrarsızlaştırılır ve panoya kopyalanmaya veya düz metin dosyası olarak indirilmeye hazır şekilde her satıra bir tane yazılır.
Somut örnek: bir sayfanın HTML'i <a href='/fiyatlandirma'>, <a href="https://ornek.com/blog"> ve hiç tırnak içermeyen çıplak bir <a href=mailto:[email protected]> içeriyor olsun — üç satırda üç farklı tırnaklama stili. href="..." ile eşleşmek üzere yazılmış bir regex, tek tırnaklı ve tırnaksız durumları sessizce atlar; ayrıştırıcı ise üçünü de aynı şekilde okur, çünkü tarayıcı için bunlar tırnaklanma biçimlerinden bağımsız olarak sadece birer öznitelik değeridir.
Bilinmesi Gerekenler
/fiyatlandirmaveya../blog/yazigibi göreli URL'ler kaynakta yazıldığı gibi ayıklanır, tamhttps://...adreslerine çözülmez. Göreli bir yolu mutlak bir URL'ye dönüştürmek, sayfanın taban adresini bilmeyi gerektirir — genelde HTML'in ilk çekildiği adres veya açık bir<base>etiketi — ve yapıştırılan bir parça bunların hiçbirini kendiliğinden taşımaz.- Araç kendiliğinden hiçbir URL çekmez; yalnızca sizin sağladığınız HTML'i okur. Bu kasıtlı bir sınırdır: bir sayfanın dış bağlantılarını bu şekilde denetlemek, bu sitenin tarafında hiçbir sunucu isteği gerektirmez — yalnızca kaynağı görüntülemek veya kaydetmek için zaten kullandığınız tarayıcı tarafında.
mailto:vetel:bağlantıları tıpkı diğerhrefdeğerleri gibi geçer, çünkü ayrıştırıcı şemaya göre ayrım yapmaz — birhrefözniteliğinde duran her şey listelenmeye değer bir bağlantı sayılır.
Sıkça Sorulan Sorular
Sayfayı kendisi mi çekiyor, yoksa HTML'i ben mi vermeliyim?
HTML'i siz sağlarsınız — kaynağı görüntüle çıktısını, kaydedilmiş bir .html dosyasının içeriğini veya herhangi bir HTML parçasını yapıştırın. Araç kendiliğinden URL çekmez (bu, sitenin yapmadığı bir sunucu isteği gerektirir).
Göreli bağlantılar dahil mi, tam URL'ye mi çevriliyor?
Göreli bağlantılar (ör. /hakkimizda veya ../sayfa.html) kaynakta yazıldığı gibi ayıklanır, asla mutlak URL'ye çözülmez. Bunları çözmek, sayfanın taban adresini bilmeyi gerektirir — genelde HTML'in çekildiği adres — ve yapıştırılan bir parça bunu kendiliğinden taşımaz.
mailto: ve tel: bağlantılarını da içeriyor mu?
Evet — şema ne olursa olsun her href değeri ayıklanır, çünkü ayrıştırıcı bağlantının türüne göre filtreleme yapmadan doğrudan özniteliğin kendisini okur.
Neden regex yerine tarayıcının DOM motoruyla ayrıştırıyor — gerçekten fark eder mi?
En çok dağınık, gerçek dünya HTML'inde fark eder. Tek bir tırnaklama stiline (diyelim ki çift tırnaklı href="...") göre ayarlanmış bir regex, tek tırnaklı veya tırnaksız öznitelikleri, kendi kendini kapatan varyasyonları ve derinlemesine iç içe geçmiş veya bozuk işaretlemenin içine gömülü href'leri sessizce atlar. DOM ayrıştırıcı bunların hepsini, sayfayı render ederken bir tarayıcının yapacağı gibi ele alır — çünkü zaten aynı temel motordur.
Küçültülmüş (minified) veya kötü bozulmuş HTML'deki bağlantıları da yakalar mı?
Neredeyse her durumda evet. Tarayıcılar, mükemmel biçimlendirilmiş olmaktan çok uzak sayfaları render etmek üzere tasarlanmıştır — eksik kapanış etiketleri, tutarsız iç içe geçme, tek satırlık küçültülmüş işaretleme — ve burada da aynı toleranslı ayrıştırma geçerlidir; bu da tam olarak temiz, düzgün biçimlendirilmiş girdi bekleyen katı bir regex'e karşı avantajıdır.
Benzer Araçlar
Sorun Bildir
Link (href) Çıkarıcı
Yorumlar
Henüz yorum yok — ilk yorumu siz yazın!