我尝试登录网站并进行自动清理工作。
我需要登录的网站是: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并提交它?再次感谢!
答案 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存储在变量中,并将其发送到所有后续要进行身份验证的请求中。