web-dev-qa-db-ja.com

pythonを使用してWebサイトにログインし、機械化する方法

私はウェブサイトにログインしようとしています http://www.magickartenmarkt.de とメンバーエリアでいくつかの分析を行います( https://www.magickartenmarkt.de/ ?mainPage = showWants )。これに関する他の例を見ましたが、私のアプローチがうまくいかなかった理由がわかりません。最初のアプローチに適した形式を特定しましたが、それが機能したかどうかは不明です。 2番目の方法では、再起動中のWebページに、メンバーエリアにアクセスできないことが表示されます。

何か助けていただければ嬉しいです。

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

ナビゲーションを容易にするためにブラウザインスタンスを使用しないのはなぜですか? Mechanizeには特定のフォームを選択する機能もあります(たとえば、nr = 0はページの最初のフォームを選択します)。

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