gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:01 25 4
gpt4 key购买 nike

这是脚本>>

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

当启动脚本时,我得到了这个

Traceback (most recent call last):
File "C:/Python26/ritaj2.py", line 9, in <module>
form = forms[0]
IndexError: list index out of range

这是什么问题,我在 Windows 上运行,python 2.6.4

更新:

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

最佳答案

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

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

它执行自定义的 Google 搜索,与登录无关(另外,由于某种原因,ClientForm 在识别该特定表单时遇到一些问题 - 但该表单对您来说无论如何都没有用,所以我没有探索该问题进一步)。

您仍然可以使用页面中的控件

forms = ClientForms.ParseResponseEx(response)

这使得 forms[0]一个包含表单之外的所有控件的人工控件。

具体来说,这种方法按顺序识别具有以下名称的控件(这里再次存在一些解析困惑,但希望不是你的 killer ......):

>>> 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']

所以你应该能够设置 usernamepassword “非表单”的控件f ,然后从那里继续。

(旁白: raw_input 已经返回一个字符串,丢失那些多余的 str() 调用)。

关于Python:网络登录脚本,有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com