Évolution de l'agent utilisateur sur urllib2.urlopen
Comment puis-je télécharger une page web avec un agent utilisateur autre que celui par défaut sur urllib2.urlopen?
Vous devez vous connecter pour publier un commentaire.
Comment puis-je télécharger une page web avec un agent utilisateur autre que celui par défaut sur urllib2.urlopen?
Vous devez vous connecter pour publier un commentaire.
Réglage de l'User-Agent de tout le monde préféré Dive Into Python.
L'histoire courte: Vous pouvez utiliser Demande.add_header pour ce faire.
Vous pouvez également passer les en-têtes dans un dictionnaire lors de la création de la Requête elle-même, comme le note docs:
Je répondu un question similaire il y a quelques semaines.
Il y a un exemple de code dans cette question, mais, fondamentalement, vous pouvez faire quelque chose comme ceci: (Note de la capitalisation de
User-Agent
de La RFC 2616, section 14.43.)User-agent
devrait en fait êtreUser-Agent
(L'Un à l'actif du bilan) Semble fonctionner pour moi quand fait.Ou, un peu plus court:
req = urllib2.Request('www.example.com', headers={'User-Agent': 'Mozilla/5.0'})
. Je préfère ce formulaire pour faire une seule demande.html = urlopen(Request('http://www.example.com', headers={'User-Agent': 'Mozilla/5.0'})).read()
Pour python 3, urllib est divisé en 3 modules...
data=b'None'
paramètre de la réponse. Il a transformé l'exemple de demande de POSTE avec des données non valides. Probablement la raison de l'échec dans votre cas, @MaksimToutes ces mesures devraient en théorie, mais (avec Python 2.7.2 sur Windows au moins) toutes les fois que vous envoyez un personnalisé-tête User-agent, urllib2 ne pas envoyer de cet en-tête. Si vous n'avez pas essayez d'envoyer une-tête User-agent, il envoie la valeur par défaut de Python /urllib2
Aucune de ces méthodes ne semblent travailler pour ajouter de l'agent Utilisateur, mais ils travaillent pour d'autres en-têtes:
opener.addheaders
devrait probablement être[('User-agent', 'Custom user agent')]
. Sinon, toutes ces méthodes de travail (je l'ai testé sur Python 2.7.3 (Linux)). Dans votre cas, il pourrait casser parce que vous utilisez le proxy argument de mal.Pour
urllib
vous pouvez utiliser:Une autre solution dans
urllib2
et Python 2.7:Essayez ceci :
urllib2
et pas à d'autres modules.il y a deux propriétés de
urllib.URLopener()
à savoir:addheaders = [('User-Agent', 'Python-urllib/1.17'), ('Accept', '*/*')]
etversion = 'Python-urllib/1.17'
.Pour tromper le site web, vous avez besoin de changements, à la fois de ces valeurs de l'Agent Utilisateur. par exemple
Le navigateur google Chrome :
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36'
Google bot :
'Googlebot/2.1'
comme ce
la modification d'une propriété ne fonctionne pas parce que le site web de la marque comme une demande suspecte.