Comment puis-je télécharger une page web avec un agent utilisateur autre que celui par défaut sur urllib2.urlopen ?
Réponses
Trop de publicités?I répondu à a question similaire il y a quelques semaines.
Il y a un exemple de code dans cette question, mais en gros vous pouvez faire quelque chose comme ceci : (Notez la capitalisation de User-Agent
à partir de RFC 2616 , article 14.43).
opener = urllib2.build_opener()
opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
response = opener.open('http://www.stackoverflow.com')
Configuration de l'agent utilisateur du préféré de tous Plongez dans Python .
L'histoire courte : Vous pouvez utiliser Demande.add_header pour le faire.
Vous pouvez également transmettre les en-têtes sous forme de dictionnaire lors de la création de la demande elle-même, comme l'indiquent les documents :
en-têtes doit être un dictionnaire, et sera traité comme si
add_header()
a été appelé avec chaque clé et valeur comme arguments. Ceci est souvent utilisé pour "usurper" l'identité de l'utilisateur.User-Agent
qui est utilisé par un navigateur pour s'identifier - certains serveurs HTTP n'autorisent que les demandes provenant de navigateurs courants, par opposition aux scripts. Par exemple, Mozilla Firefox peut s'identifier en tant que"Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"
alors queurllib2
La chaîne de caractères par défaut de l'agent de l'utilisateur est"Python-urllib/2.6"
(sur Python 2.6).
Tout cela devrait fonctionner en théorie, mais (avec Python 2.7.2 sous Windows au moins) chaque fois que vous envoyez un en-tête User-agent personnalisé, urllib2 n'envoie pas cet en-tête. Si vous n'essayez pas d'envoyer un en-tête User-agent, il envoie l'en-tête par défaut Python / urllib2
Aucune de ces méthodes ne semble fonctionner pour ajouter l'agent utilisateur, mais elles fonctionnent pour les autres en-têtes :
opener = urllib2.build_opener(proxy)
opener.addheaders = {'User-agent':'Custom user agent'}
urllib2.install_opener(opener)
request = urllib2.Request(url, headers={'User-agent':'Custom user agent'})
request.headers['User-agent'] = 'Custom user agent'
request.add_header('User-agent', 'Custom user agent')
- Réponses précédentes
- Plus de réponses