python登录论坛
我写这篇文章是为了尝试登录论坛(phpBB3) 然而,当我运行它时,它会出现python登录论坛,python,login,phpbb3,typeerror,Python,Login,Phpbb3,Typeerror,我写这篇文章是为了尝试登录论坛(phpBB3) 然而,当我运行它时,它会出现 Traceback (most recent call last): File "C:/Users/Mike/Documents/python/test urllib2", line 4, in <module> page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata]) TypeError:
Traceback (most recent call last):
File "C:/Users/Mike/Documents/python/test urllib2", line 4, in <module>
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata])
TypeError: string indices must be integers
这不会抛出任何错误消息,它只给出3个空行。这是因为我试图从登录后消失的登录页面读取内容。如果是这样,我如何让它显示在点击登录后应该显示的索引。您的URL字符串不应该是
"http://www.woarl.com/board/ucp.php?mode=login"[logindata]
但是
我想,因为[]代表数组,它需要一个整数。我可能错了,因为我没有使用太多Python。在字符串http:…“和urlencoded数据
[loginda]
之间使用逗号怎么样?您的行
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata])
是语义无效的Python。你大概是说
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login", [logindata])
其中有一个逗号分隔参数。然而,你真正想要的只是
page = urllib2.urlopen("http://www.woarl.com/board/ucp.php?mode=login", logindata)
无需尝试将logindata包含在列表中,也无需使用urlopen的最新版本,即urllib2库。如果在logindata上键入,则可以看到它是一个字符串:
>>> import urllib
>>> logindata = urllib.urlencode({'username': 'x', 'password': 'y'})
>>> type(logindata)
<type 'str'>
导入urllib
>>>loginda=urllib.urlencode({'username':'x','password':'y'})
>>>类型(登录数据)
将其放在括号([])中会将其放在列表上下文中,这不是您想要的。使用高级“机械化”模块会更容易。无效有点模糊。它在语法上是有效的。它只是有一个类型错误,因为索引是URL编码的字典,而不是整数;我将我的回答编辑为“语义无效”,因为正如你所指出的,它在语法上是有效的。
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata])
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login", [logindata])
page = urllib2.urlopen("http://www.woarl.com/board/ucp.php?mode=login", logindata)
>>> import urllib
>>> logindata = urllib.urlencode({'username': 'x', 'password': 'y'})
>>> type(logindata)
<type 'str'>