18
나는 웹 사이트 http://www.magickartenmarkt.de에 로그인하고 회원 영역 (https://www.magickartenmarkt.de/?mainPage=showWants)에서 분석을 시도하고 있습니다. 이것에 대한 다른 예를 보았지만, 왜 내 접근법이 효과가 없는지 알 수 없습니다. 나는 첫 번째 접근 방식에 맞는 양식을 찾았지만 그것이 효과가 있었는지 확실하지 않다. 두 번째 접근 방식에서 웹 페이지를 보류하면 회원 영역에 대한 액세스 권한이없는 것으로 나타납니다.파이썬으로 웹 사이트에 로그인하여 기계화하는 방법
나는 어떤 도움도 기뻐합니다.
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()
감사합니다. 그것은 매력처럼 작동합니다. 이 구현으로 쿠키에 대해 걱정할 필요가 있습니까? 또한 브라우저 확인 .set_handle_refresh (기계어 ._http.HTTPRefreshProcessor(), max_time = 1) ' this. 브라우저 (객체?)가 매초마다 웹 페이지를 새로 고칩니다. – Rappel
브라우저는 쿠키를 자체 세션에 저장합니다 (스크립트가 종료되거나 더 이상 특정 인스턴스를 사용하지 않으면 손실됩니다). 하지만 쿠키가 만료되지 않는 한 향후 쿠키를 사용할 수있게하려면 cookielib (http://docs.python.org)을 사용해야합니다. /2/library/cookielib.html – Ford
나는 그것이'browser = mechanize.Browser()'라고 믿는다. –