Qual è la soluzione preferita per verificare se un URL è relativo o assoluto?Come posso verificare se un URL è assoluto usando Python?
risposta
Python 2
È possibile utilizzare il modulo urlparse
per analizzare un URL e quindi è possibile controllare se è relativo o assoluto per controllando se ha impostato il nome host.
>>> import urlparse
>>> def is_absolute(url):
... return bool(urlparse.urlparse(url).netloc)
...
>>> is_absolute('http://www.example.com/some/path')
True
>>> is_absolute('//www.example.com/some/path')
True
>>> is_absolute('/some/path')
False
Python 3
urlparse
è stato spostato a urllib.parse
, in modo da utilizzare il seguente:
from urllib.parse import urlparse
def is_absolute(url):
return bool(urlparse(url).netloc)
Se vuoi sapere se un URL è assoluto o relativo al fine di aderire con un URL di base, di solito faccio urlparse.urljoin
comunque:
>>> from urlparse import urljoin
>>> urljoin('http://example.com/', 'http://example.com/picture.png')
'http://example.com/picture.png'
>>> urljoin('http://example1.com/', '/picture.png')
'http://example1.com/picture.png'
>>>
Si scopre che questo è ciò che volevo fare - si tratta del primo URL, il valore predefinito per tutte le parti non specificate del secondo URL. Se il secondo è assoluto, usa solo quello. – rescdsk
Non sei sicuro di quello che stai chiedendo circa. Stai solo cercando di vedere se inizia con http://
? Se è così, una semplice regex farà il trucco.
(EDIT: vedi commento qui sotto - un ottimo punto !!)
Si prega di NON usare una regex solo per verificare che una stringa inizi con qualche prefisso conosciuto. Usa il metodo 'startswith' di una stringa per quello. –
Inoltre, il controllo dell'URL è un po 'più complesso del semplice controllo di un determinato prefisso. – rplnt
Non posso commentare risposta accettata, quindi scrivere questo commento come nuova risposta: schema IMO controllo nella risposta accettata (bool(urlparse.urlparse(url).scheme)
) non è una buona idea a causa di http://example.com/file.jpg, https://example.com/file.jpg e //example.com/file.jpg sono URL assoluti ma in ultimo caso otteniamo schema = ''
Io uso questo codice:
is_absolute = True if '//' in my_url else False
AFAIK // foo/bar è un URL relativo valido. Con "relativo" che significa "senza schema e netloc". – guettli
- 1. Come verificare se esiste ancora un ALAsset usando un URL
- 2. Verificare se un percorso è assoluto o relativo
- 3. Come verificare se Celery/Supervisor è in esecuzione usando Python
- 4. Come posso verificare se CSS calc() è disponibile usando JavaScript?
- 5. Come verificare se una stringa è un URL HTTP valido?
- 6. posso verificare se esiste un file in un URL?
- 7. posso verificare se esiste un file in un URL?
- 8. Come posso verificare se un file esiste usando Emacs Lisp?
- 9. Come verificare rapidamente se l'oggetto NSString è un URL valido?
- 10. Come posso non abbreviare un URL usando python?
- 11. Come posso verificare se un elenco è ordinato?
- 12. come posso verificare se una lettera in una stringa è in maiuscolo usando python?
- 13. In Node.js, dato un URL, come posso verificare se è un jpg/png/gif?
- 14. Come verificare se un'attività è già in Python Queue?
- 15. come verificare se un file è stato selezionato usando javascript?
- 16. python 3: come verificare se un oggetto è una funzione?
- 17. Come posso verificare se un intero con segno è positivo?
- 18. Come verificare se un modulo python è stato importato?
- 19. Python, come verificare se un set di risultati è vuoto?
- 20. Modificare un URL relativo alla URL assoluto
- 21. Come posso verificare se un campo dell'editor CK è vuoto
- 22. Come posso verificare se un valore è un numero?
- 23. Posso verificare se esiste un indirizzo email usando .net?
- 24. Come verificare rapidamente se il server URL è disponibile
- 25. Come verificare se un percorso è un percorso assoluto o un percorso relativo in modo multipiattaforma con Python?
- 26. Come verificare se una cartella contiene file usando python 3
- 27. Come posso verificare se un tipo è un sottotipo di un tipo in Python?
- 28. Html.BeginForm() con un URL assoluto?
- 29. Python: come verificare se un elenco annidato è essenzialmente vuoto?
- 30. Come verificare se l'immagine esiste con un determinato URL?
Non dovremmo considerare anche 'www.esempio.com/alcuni/percorso' come abolito? – Geo
Ufficialmente, questo è un URL relativo con l'intera stringa come percorso. Se vuoi che sia considerato assoluto, devi aggiungere "http: //" con qualche pre-elaborazione o non usare "urlparse". –
Secondo RFC '// google.com' è un url relativo al protocollo. E il tuo codice restituirà 'False' per questo. – Nik