1

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

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

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

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

我的 JetBeans 不喜欢'verbose'告诉我我需要做某事,但没有具体解释什么)。

我也试过这个:浏览器模拟 - 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 并提交呢?再次感谢!

4

2 回答 2

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)
于 2013-02-25T20:01:55.000 回答
1

那么第一件事

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

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

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

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

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

于 2013-02-25T14:51:16.037 回答