파이썬3 urllib 로그인 관련 질문입니다!
조회수 6049회
from urllib.parse import urlencode
from urllib.request import Request,urlopen
from urllib import *
url = "https://dshs.kr:44919/bbs/login.php" #daeshin high
login_form = {"회원아이디":"_______","패스워드":"_______"}
login_req = urlencode(login_form)#convert dictionary to query string
request = Request(url, login_req)
response = urlopen(request)
위에가 제가 짠 코드이고 다음과 같은 오류가 뜹니다.
Traceback (most recent call last):
File "C:\Users\SeungYoun\Desktop\URL_Request.py", line 9, in <module>
response = urlopen(request)
File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
return opener.open(url, data, timeout)
File "C:\Python34\lib\urllib\request.py", line 461, in open
req = meth(req)
File "C:\Python34\lib\urllib\request.py", line 1112, in do_request_
raise TypeError(msg)
TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.
>>>
여기서 질문이
다음이 의미하는 바를 잘 모르겠고 그래서 오류가 뜨는 이유도 모르겠습니다.
request = Request(url, login_req)
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
오류내용을 읽어보면 POST 값은 str형식은 될수없고 bytes 형식만 된다고 하네요
encode('utf-8) 로 utf-8형식으로 인코딩을해버리면 bytes로 바뀌게 됩니다
from urllib.parse import urlencode from urllib.request import Request,urlopen from urllib import * url = "https://dshs.kr:44919/bbs/login.php" #daeshin high login_form = {"회원아이디":"_______","패스워드":"_______"} # 지금은 STR 형식입니다. STR은 안된다 하니까 login_req = urlencode(login_form)#convert dictionary to query string # UTF-8 형식으로 인코딩해버리면 bytes로 바뀝니다 login_req = login_req.encode('utf-8') request = Request(url, login_req) response = urlopen(request)
이렇게 추가하면 안되던게 되네요~
-
(•́ ✖ •̀)
알 수 없는 사용자 -
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
- 감사합니다!!! 알 수 없는 사용자 2016.7.15 21:10
- 죄송합니다만 비번하고 아이디좀 공백처리 해주실수 있나요 제가 실수로 올려서 ㅠ 알 수 없는 사용자 2016.7.15 21:20
- 억. 죄송합니다 몰랐네요/. 테스트인줄알고 알 수 없는 사용자 2016.7.15 23:38
-
댓글 입력