use*_*061 3 python login phpbb3 typeerror
我写这篇文章试图登录论坛(phpBB3).
import urllib2, re
import urllib, re
logindata = urllib.urlencode({'username': 'x', 'password': 'y'})
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata])
output = page.read()
Run Code Online (Sandbox Code Playgroud)
然而,当我运行它时,它会出现;
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
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
编辑
在字符串和数据之间添加逗号会产生此错误
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])
File "C:\Python25\lib\urllib.py", line 84, in urlopen
return opener.open(url, data)
File "C:\Python25\lib\urllib.py", line 192, in open
return getattr(self, name)(url, data)
File "C:\Python25\lib\urllib.py", line 327, in open_http
h.send(data)
File "C:\Python25\lib\httplib.py", line 711, in send
self.sock.sendall(str)
File "<string>", line 1, in sendall
TypeError: sendall() argument 1 must be string or read-only buffer, not list
Run Code Online (Sandbox Code Playgroud)
EDIT2
我把代码从原来改变了;
import urllib2, re
import urllib, re
logindata = urllib.urlencode({'username': 'x', 'password': 'y'})
page = urllib2.urlopen("http://www.woarl.com/board/ucp.php?mode=login", logindata)
output = page.read()
Run Code Online (Sandbox Code Playgroud)
这不会抛出任何错误消息,它只给出3个空行.这是因为我试图从登录页面读取,登录后消失.如果是这样,我如何让它显示登录后应该出现的索引.
你的路线
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login"[logindata])
Run Code Online (Sandbox Code Playgroud)
在语义上是无效的Python.大概是你的意思
page = urllib.urlopen("http://www.woarl.com/board/ucp.php?mode=login", [logindata])
Run Code Online (Sandbox Code Playgroud)
其中有一个逗号分隔参数.但是,你真正想要的只是简单
page = urllib2.urlopen("http://www.woarl.com/board/ucp.php?mode=login", logindata)
Run Code Online (Sandbox Code Playgroud)
没有尝试将logindata封装到列表中,并且使用urlopen的更新版本是urllib2库.