2010-12-13 98 views
2

J'essaie d'implémenter en Python un programme simple qui lit des pages web rom et les écrit dans des fichiers. Il y a environ 2000 pages de messages incrémentalement numérotés, mais certains nombres manquent.Téléchargement automatique de page Web Python, avec nom d'utilisateur, mot de passe et cookies

Le site Web est protégé par un nom d'utilisateur et un mot de passe, et j'utilise les mêmes nom d'utilisateur et mot de passe que ceux que j'utilise habituellement pour y accéder manuellement. J'utilise des exemples de code avec la gestion des cookies que j'ai trouvé dans le site Web officiel de Python, mais quand je les ai essayer le site que je suis en train de copier les réponses

« Votre navigateur n'accepte pas nos cookies. Pour voir (Code 0) "

De toute évidence, il y a un problème avec les cookies, et peut-être que je ne gère pas correctement le nom d'utilisateur et le mot de passe. Toute suggestion concernant le code suivant?

import urllib2 
import cookielib 
import string 
import urllib 
def cook(): 
    url="http://www.URL.com/message/" 
    cj = cookielib.LWPCookieJar() 
    authinfo = urllib2.HTTPBasicAuthHandler() 
    realm = "http://www.URL.com" 
    username = "ID" 
    password = "PSWD" 
    host = "http://www.URL.com/message/" 
    authinfo.add_password(realm, host, username, password) 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), authinfo) 
    urllib2.install_opener(opener) 

    # Create request object 
    txheaders = { 'User-agent' : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" } 
    try: 
     req = urllib2.Request(url, None, txheaders) 
     cj.add_cookie_header(req) 
     f = urllib2.urlopen(req) 

    except IOError, e: 
     print "Failed to open", url 
     if hasattr(e, 'code'): 
      print "Error code:", e.code 

    else: 

     print f 

cook 
url="http://www.URL.com/message/" 
urllib.urlretrieve(url + '1', 'filename') 
+3

Une alternative plutôt qu'une solution: utiliser la bibliothèque mécaniser http://wwwsearch.sourceforge.net/mechanize/ –

+0

Pas une solution non plus, mais si vous cherchez à gratter du HTML avec python et que vous ne connaissez pas [BeautifulSoup] (http://www.crummy.com/software/BeautifulSoup), c'est extrêmement utile. – Russ

Répondre

0

Jetez un oeil à Bolacha, il est un wrapper pour httplib2 qui gère les cookies et autres trucs ...

+0

Merci, je vais essayer. – Giovanni