En gros, j'essaye de télécharger une URL en utilisant urllib2 en python.
le code est le suivant:
import urllib2
req = urllib2.Request('www.tattoo-cover.co.uk')
req.add_header('User-agent','Mozilla/5.0')
result = urllib2.urlopen(req)
il génère ValueError et le programme écrase l'URL dans l'exemple. Lorsque j'accède à l'URL dans un navigateur, cela fonctionne correctement.
Des idées comment gérer le problème?
METTRE À JOUR:
merci pour Ben James et qch le problème est détecté => ajoutez 'http: //'
Maintenant, la question est raffinée: Est-il possible de gérer de tels cas automatiquement avec une fonction intégrée ou dois-je gérer les erreurs avec une concaténation de chaînes ultérieure?
Lorsque vous entrez une URL dans un navigateur sans protocole, HTTP est sélectionné par défaut. urllib2
ne fera pas cette hypothèse pour vous; vous devez le préfixer avec http://
.
Vous devez utiliser une URL complète, y compris le protocole, et pas seulement spécifier un nom d'hôte.
L'URL correcte serait http://www.tattoo-cover.co.uk/
.
Vous pouvez utiliser la méthode urlparse
de urllib
(Python 3) pour vérifier la présence d’un schéma d’adressage (http, https, ftp) et le concaténer s’il n’est pas présent:
In [1]: from urllib.parse import urlparse
..:
..: url = 'www.myurl.com'
..: if not urlparse(url).scheme:
..: url = 'http://' + url
..:
..: url
Out[1]: 'http://www.myurl.com'
Vous pouvez utiliser la fonction urlparse pour cela, je pense :