Python:web登录脚本,有什么问题?

2024-06-25 23:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

这是脚本>;>

import ClientForm
import urllib2
request = urllib2.Request("http://ritaj.birzeit.edu")

response = urllib2.urlopen(request)
forms = ClientForm.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
print form
sooform = str(raw_input("Form Name: "))
username = str(raw_input("Username: "))
password = str(raw_input("Password: "))

form[sooform] = [username, password]

request2 = form.click()
try:
    response2 = urllib2.urlopen(request2)
except urllib2.HTTPError, response2:
    pass

print response2.geturl()
print response2.info()  # headers
print response2.read()  # body
response2.close()

开始写剧本的时候,我明白了

^{pr2}$

问题是什么,我运行在windows,python2.6.4上

更新:

我想要一个登录此站点并打印响应的脚本:)


Tags: importform脚本closeinputrawresponserequest
2条回答

HTML中唯一的<form>标记服务于该URL(将其保存到文件中并自行查找!)是:

<form method="GET" action="http://www.google.com/u/ritaj">

它做了一个定制的Google搜索,与登录无关(另外,由于某些原因,ClientForm在识别特定表单时遇到了一些问题,但是这个表单对您毫无用处,所以我没有进一步探讨这个问题)。在

您仍然可以使用

^{pr2}$

这使得forms[0]成为一个包含所有不在窗体中的控件的人工控件。在

具体地说,这种方法按顺序用以下名称标识控件(同样,这里有一点解析混乱,但希望不是您的杀手……):

>>> f = forms[0]
>>> [c.name for c in f.controls]
['q', 'sitesearch', 'sa', 'domains', 'form:mode', 'form:id', '__confirmed_p', '__refreshing_p', 'return_url', 'time', 'token_id', 'hash', 'username', 'password', 'persistent_p', 'formbutton:ok']

所以您应该能够设置“non-form”fusername和{}控件,并从那里继续。在

(边位:raw_input已经返回了一个字符串,丢失了它周围那些多余的str()调用)。在

实际地址似乎使用的是https,而不是http。检查urllib2doc,看看它是否处理HTTPS(我相信您需要ssl)

相关问题 更多 >