Bir URL'yi ayrıştırmam gerekiyor. Şu anda urlparse.urlparse() ve urlparse.urlsplit() kullanıyorum.Gerektiğinde 'http: //' protokolünü bir url'ye nasıl ekleyebilirim?
sorun şeması mevcut değilken ben URL'den "netloc" (ana bilgisayar) alınamıyor olmasıdır. Yani i aşağıdaki URL'yi varsa:
Ben netloc alamayanwww.amazon.com/Programming-Python-Mark-Lutz/dp/0596158106/ref=sr_1_1?ie=UTF8 & qid = 1308060974 & sr = 8 -1
:
sözdizimi özelliklerine ardından: piton docs göre www.amazon.com
RFC 1808, urlparse düzgün ‘//’ tarafından tanıtılan yalnızca bir netloc tanır. Aksi halde, girişin olduğu varsayılarak bir URL olarak ve bir yol bileşeni ile başlatılır.
Yani, bilerek yolu. Ancak, netloc'u bu URL'den nasıl alacağımı hala bilmiyorum.
ben düzeni varsa ben kontrol edebilir düşünüyorum ve eğer o değil, o ekleyin ve sonra ayrıştırmak. Ama bu çözüm gerçekten iyi görünmüyor.
Daha iyi bir fikrin var mı?
DÜZENLEME: tüm cevaplar için teşekkürler. Ama, Corey ve diğerlerinin önerdiği şeyleri başaramıyorum. Becouse, diğer protokol/şema ile bir URL alırsanız, ben onu dağıtırdım. Bkz:
ben bu URL'yi alırsanız: i "http: //" eklersiniz önerilen kod ile
ftp://something.com
başlangıç ve karışıklık o kadar olur.
i nota
if not urlparse.urlparse(url).scheme:
url = "http://"+url
return urlparse.urlparse(url)
şey bulduk çözüm:
İlk önce bazı doğrulama yapmak ve herhangi bir şema verilirse ben http olarak kabul: //
mi: o pased eğer protokolünü kullanmak
Daha iyi bir seçenektir için Bunun nedeni, URL'nin protokol kısmı - 'http: //' - eksik mi? – ewall
Evet, nedeni bu. Ancak, şema hala eksikse nasıl alabilirim? senin çözümde – santiagobasulto
, ben hala kontrol ediyorum lider '//' (ve muhtemelen sadece '/'), uygun bir URL o olurdu çünkü bunu @TokenMacGuy – SingleNegationElimination