Question

J'ai lu sur la capacité de l'urllib2 de Python pour ouvrir et lire des répertoires qui sont protégés par mot, mais même après avoir regardé des exemples dans la documentation, et ici sur StackOverflow, je ne peux pas obtenir mon script pour le travail.

import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm=None,
                    uri='https://webfiles.duke.edu/',
                    user='someUserName',
                    passwd='thisIsntMyRealPassword')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
socks = urllib2.urlopen('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
print socks.read()
socks.close()

Quand j'imprimer le contenu, il imprime le contenu de l'écran de connexion que l'URL que je suis en train d'ouvrir vous redirigera vers. Quelqu'un sait pourquoi il en est?

Était-ce utile?

La solution

auth_handler est uniquement pour l'authentification HTTP de base. Le site ici contient un formulaire HTML, de sorte que vous devrez soumettre votre nom d'utilisateur / mot de passe en tant que données POST.

Je vous recommandons d'utiliser le module mechanize qui va simplifier la connexion pour vous.

Exemple rapide:

import mechanize

browser = mechanize.Browser()

browser.open('https://webfiles.duke.edu/?path=/afs/acpub/users/a')

browser.select_form(nr=0)

browser.form['user'] = 'username'
browser.form['pass'] = 'password'
req = browser.submit()

print req.read()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top