Python:登录网站

时间:2013-02-25 14:41:23

标签: python login python-2.7 urllib2

我尝试登录网站并进行自动清理工作。

我需要登录的网站是:http://site.com/Account/LogOn

我尝试了在堆栈上找到的各种代码,例如Login to website using python(但我卡在这一行

session = requests.session(config={'verbose': sys.stderr}) 

我的JetBeans不喜欢'verbose'告诉我我需要做些什么,但没有解释到底是什么。)

我也试过这个:Browser simulation - Python,但也没有运气。

任何人都可以帮助我吗?所有答案都将得到赞赏。提前谢谢。

PS:我在两周前开始学习Python,所以请详细说明我的“专业”级别的暗淡的答案:)

-------------------------更新:-------------------- ---------

我设法登录,但是当我试图移动其他页面并按下按钮时,它表示请登录!

我使用此代码:

url = 'http://site.com/Account/LogOn'
values = {'UserName': 'user',
          'Password': 'pass'}

data = urllib.urlencode(values)
cookies = cookielib.CookieJar()

opener = urllib2.build_opener(
    urllib2.HTTPRedirectHandler(),
    urllib2.HTTPHandler(debuglevel=0),
    urllib2.HTTPSHandler(debuglevel=0),
    urllib2.HTTPCookieProcessor(cookies))

response = opener.open(url, data)
the_page = response.read()
http_headers = response.info()
print response

登录后,我需要切换一个菜单值,在HTML中看起来像这样:

<select id="menu_uid" name="menu_uid" onchange="swapTool()" style="font-size:8pt;width:120px;">
<option value="1" selected>MyProfile</option>
...
<option value="6" >DeleteTree</option>

但如果我形成这样的URL,我也可以直接这样做: http://site.com/Account/management.html?Category=6&deltreeid=6&do=Delete+Tree

那么,我该如何构建此URL并提交它?再次感谢!

2 个答案:

答案 0 :(得分:4)

为自己节省很多麻烦并使用requests

url = 'http://site.com/Account/LogOn'
values = {'UserName': 'user',
          'Password': 'pass'}

r = requests.post(url, data=values)
# Now you have logged in

params = {'Category': 6, 'deltreeid': 6, 'do': 'Delete Tree'}
url = 'http://site.com/Account/management.html'

# sending cookies as well
result = requests.get(url, data=params, cookies=r.cookies)

答案 1 :(得分:1)

第一件事

它向 / Account / LogOn 发送POST请求。 这些字段称为 UserName 密码

然后你可以使用python的httplib来做HTTP请求

http://docs.python.org/2/library/httplib.html

(最后有关于如何进行POST的示例)。

然后,您将在HTTP标头中获得包含会话cookie的响应。您需要将该cookie存储在变量中,并将其发送到所有后续要进行身份验证的请求中。