2014-12-05 4 views
0

urllib3 및 아름다운 스프를 사용하여 일부 웹 사이트 긁어 모으기를 시도하고 있습니다. 파이썬 3 인코딩/디코딩은 나를 걸고있다. 이파이썬 인코딩 된 문자열은 여전히 ​​이진 형식입니다.

나는 아름다운 수프를 호출하기 전에 디코딩 r.data.decode('utf-8')을했던 것처럼
r = http.request('GET', 'https://www.************************.jsf') 

if(r.status == 200): 
    page = r.data.decode('utf-8') 
    soup = BeautifulSoup(page) 

    print(soup.prettify()) 
    #This prints - [Decode error - output not utf-8] 
    #    [Decode error - output not utf-8] 

    print(soup.prettify().encode('utf-8')) 
    #This prints the data but with binary mark 
    # b'<!DOCTYPE html PUBLIC "-//W3C//D....... 
    #..........................................' 

, 내가 왜 다시 인코딩해야 할 이유가 여전히 표시 ''B 보여 않습니다 내 코드에도 문자열로 변환 한 후

+0

'data' 속성은 문서화되어 있지 않습니다. 'getresponse() '호출도없는 이유는 무엇입니까? –

+0

readthedocs에서 urllib3 문서를 읽었습니다. getresponse()에 대한 참조를 찾을 수 없습니다. 또한 데이터 속성은 응답 내용 인'https : // urllib3.readthedocs.org/en/latest/index.html'에 액세스하는 유일한 방법입니다. 어쩌면 나는 뭔가를 놓치고있다. –

답변

0

b'xxx' 이진 유형 값의 바이트 (시퀀스의 표현이다 -. .encode()의 자연스러운 결과를 문자열이 아닌 경우 print() 기능이 자동으로 표현 오브젝트 변환

쓰기 시도. infor를 파일로 디버깅합니다.함수는 특정 charset/encoding을 지원하는 콘솔 출력에 문제가있을 수 있습니다.