Pour l'instant je fais ceci: (python3, urllib)Comment rester en vie dans HTTP/1.1 en utilisant python urllib
url = 'someurl'
headers = '(('HOST', 'somehost'),/
('Connection', 'keep-alive'),/
('Accept-Encoding' , 'gzip,deflate'))
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor())
for h in headers:
opener.addheaders.append(x)
data = 'some logging data' #username, pw etc.
opener.open('somesite/login.php, data)
res = opener.open(someurl)
data = res.read()
... some stuff here...
res1 = opener.open(someurl2)
data = res1.read()
etc.
Ce qui se passe est ce; Je continue d'obtenir des réponses gzippées du serveur et je suis resté connecté (je récupère du contenu qui n'est pas disponible si je n'étais pas connecté) mais je pense que la connexion est en train de tomber entre chaque requête opener.open;
Je pense que parce que la connexion est très lente et il semble qu'il y ait une nouvelle connexion à chaque fois. Deux questions:
a) Comment puis-je tester si la connexion est en train de rester en vie/en train de mourir
b) Comment faire en sorte qu'elle reste vivante entre les demandes d'autres URL?
Prenez soin :)
a) Renifler le trafic serait un moyen trivial de vérifier si vous restez en vie. Assurez-vous que le serveur prend également en charge keepalive. Comme pour b), au moins dans python2.x, il y avait un moyen de spécifier un gestionnaire qui pourrait keepalive, mais il ne semblait pas par défaut. – Robert
dupliquer http://stackoverflow.com/questions/1037406/python-urllib2-with-keep-alive – khachik
Eh bien, d'abord ceci est python3 et cet urlgrabber recommandé dans l'autre thread est supposé pour 2.5 et avant et second je préférerais évitez d'utiliser des bibliothèques externes pour cette tâche apparemment simple; surtout parce que je veux comprendre comment ces choses fonctionnent –