如何使用python和mechanize登录网站

如何使用python和mechanize登录网站,python,cookies,login,mechanize,webautomation,Python,Cookies,Login,Mechanize,Webautomation,我正在尝试登录该网站,并在会员区()中进行一些分析。我看到了其他的例子,但我不明白为什么我的方法不起作用。我为第一种方法确定了正确的形式,但不清楚它是否有效。 在第二种方法中,检索网页显示我无法访问成员区域 我很高兴能得到任何帮助 import urllib2 import cookielib import urllib import requests import mechanize from mechanize._opener import urlopen from mechanize._f

我正在尝试登录该网站,并在会员区()中进行一些分析。我看到了其他的例子,但我不明白为什么我的方法不起作用。我为第一种方法确定了正确的形式,但不清楚它是否有效。 在第二种方法中,检索网页显示我无法访问成员区域

我很高兴能得到任何帮助

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

为什么不使用浏览器实例来方便导航?Mechanize还可以选择特定的表单(例如,nr=0将选择页面上的第一个表单)

网络自动化?绝对是“韦伯”
webbot
甚至适用于id和类名动态变化的网页,并且比selenium有更多的方法和功能

这里有一个片段:)


谢谢你的建议!它就像一个符咒。我需要担心这个实现中的cookie吗?还发现了
browser.set\u handle\u refresh(mechanize.\u http.HTTPRefreshProcessor(),max\u time=1)
。这是否意味着浏览器-(对象?)将每秒刷新网页?浏览器将在其自己的会话中保存cookie(一旦脚本终止或您不再使用该特定实例,cookie将丢失)。但是,如果您希望这些cookie在将来的会话中可用(例如,在cookie未过期的情况下,在将来调用脚本时),您必须使用cookielib,我相信这是一个很好的选择。我会修好的。
browser = mechanize.Browser()
browser.open(YOUR URL)
browser.select_form(nr = 0)
browser.form['username'] = USERNAME
browser.form['password'] = PASSWORD
browser.submit()
from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^