2013-05-16 44 views
18

makineye giriş yapılır http://www.magickartenmarkt.de web sitesine giriş yapmaya çalışıyorum ve üye alanında (https://www.magickartenmarkt.de/?mainPage=showWants) bazı analizler yapıyorum. Bunun için başka örnekler gördüm, ancak yaklaşımlarımın neden işe yaramadığını anlamıyorum. İlk yaklaşım için doğru formları belirledim, ancak işe yarayıp yaramadığı belli değil. İkinci yaklaşımda, geri ödeme web sayfası bana üye alanına erişimim olmadığını gösteriyor.Python ile bir web sitesinde nasıl oturum açılır ve

Yardımlardan memnun olurum.

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() 

cevap

21

Neden gezinmeyi kolaylaştırmak için bir tarayıcı örneği kullanmıyorsunuz? Mekanizma ayrıca belirli formları seçme yeteneğine de sahiptir (ör. Nr = 0, sayfada ilk formu seçecektir)

browser = mechanize.Browser() 
browser.open(YOUR URL) 
browser.select_form(nr = 0) 
browser.form['username'] = USERNAME 
browser.form['password'] = PASSWORD 
browser.submit() 
+0

Tavsiyeniz için teşekkürler! Bir çekicilik gibi çalışır. Bu uygulama ile çerezler hakkında endişelenmem gerekir mi? Ayrıca, bu 'browser.set_handle_refresh (mechanize._http.HTTPRefreshProcessor(), max_time = 1)' öğesinin bulundu. Tarayıcı (nesne?) Web sayfalarını her saniye yenileyeceği anlamına mı geliyor? – Rappel

+0

Tarayıcı, çerezleri kendi oturumuna kaydeder (komut dosyası sona erdikten sonra kaybolur veya artık bu örneği kullanmazsınız). HOWEVER, bu çerezlerin gelecekteki oturumlar için kullanılabilir olmasını istiyorsanız (ör. Çerezlerin süresi dolmadığı sürece bir komut dosyasına gelecek çağrılarda), cookielib'i kullanmak zorundasınız, http://docs.python.org /2/library/cookielib.html – Ford

+1

Bu tarayıcının "mechanize.Browser()" –

İlgili konular