tutorial - Cómo iniciar sesión en un sitio web con python y mecanizar
web scraping python beautifulsoup tutorial (1)
¿Por qué no utilizar una instancia del navegador para facilitar la navegación? Mechanize también tiene la capacidad de seleccionar formularios particulares (por ejemplo, nr = 0 seleccionará el primer formulario en la página)
browser = mechanize.Browser()
browser.open(YOUR URL)
browser.select_form(nr = 0)
browser.form[''username''] = USERNAME
browser.form[''password''] = PASSWORD
browser.submit()
Estoy intentando iniciar sesión en el sitio web http://www.magickartenmarkt.de y analizar un poco en el área de miembros ( https://www.magickartenmarkt.de/?mainPage=showWants ). Vi otros ejemplos para esto, pero no entiendo por qué mis enfoques no funcionaron. Identifiqué los formularios correctos para el primer enfoque, pero no está claro si funcionó. En el segundo enfoque, la página de retiring me muestra que no tengo acceso al área de miembros.
Me alegraría por cualquier ayuda.
import urllib2
import cookielib
import urllib
import requests
import mechanize
from mechanize._opener import urlopen
from mechanize._form import ParseResponse
USERNAME = ''Test''
PASSWORD = ''bla123''
URL = "http://www.magickartenmarkt.de"
# first approach
request = mechanize.Request(URL)
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
# I don''t want to close?!
#response.close()
# Username and Password are stored in this form
form = forms[1]
form["username"] = USERNAME
form["userPassword"] = PASSWORD
#proof entering data has worked
user = form["username"] # a string, NOT a Control instance
print user
pw = form["userPassword"] # a string, NOT a Control instance
print pw
#is this the page where I will redirected after login?
print urlopen(form.click()).read ()
#second approach
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({''username'' : USERNAME, ''userPassword'': PASSWORD})
#login
response_web = opener.open(URL, login_data)
#did it work? for me not....
resp = opener.open(''https://www.magickartenmarkt.de/?mainPage=showWants'')
print resp.read()