2012-04-06 2 views
2

일부 웹 사이트의 세그먼트를 가져 오려고합니다. 스크립트는 작동하지만 á, é, í, ó, ú 같은 악센트가있는 웹 사이트입니다.urllib : utf-8로 인코딩 된 사이트 소스 코드 받기

urllib 또는 urllib2를 사용하여 사이트를 가져 오는 경우 사이트 소스 코드는 utf-8에서 인코딩되지 않습니다. utf-8은 이러한 액센트를 지원하기 때문에 좋을 것입니다.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

내 파이썬 스크립트 : 볼 그러나

opener = urllib2.build_opener() 
opener.addheaders = [('Accept-Charset', 'utf-8')] 
url_response = opener.open(url) 
deal_html = url_response.read().decode('utf-8') 

, 내가 점점 계속 결과

나는 대상 사이트가 UTF-8은 다음과 같은 메타 태그를 포함로 인코딩되어 있다고 생각 UTF-8로 인코딩되지 않은 것처럼 말입니다.

예 : "밀라노"웹 사이트는 = "밀 \ xe1n는"urllib2가 그것을

어떤 제안이 가져 오는 후?

답변

2

스크립트가 올바르게 작동하고 있습니다. "\xe1" 문자열은 디코딩으로 인해 생성 된 unicode 개체를 나타냅니다. 예를 들어, A :

>>> "Mil\xc3\xa1n".decode('utf-8') 
u'Mil\xe1n' 

"\xc3\xa1" 시퀀스 분음 마크 leter A의 UTF-8 시퀀스이다.

+0

좋아, 이제 "Mil \ xc3 \ xa1n"을 인쇄하면 Milán이 표시되는 것을 볼 수 있습니다. 그러나 소스 코드에서 문자열을 가져 와서 목록에 추가하면 "Mil \ xc3 \ xa1n"이됩니다. 목록이나 사전에서 어떻게 읽을 수 있습니까 (밀란)? –

+1

이 목록은 그 안에있는 각 항목에 대해'repr()'을 호출합니다. 이것이 확장 문자가 이스케이프 처리되는 이유입니다. 디버깅 목적으로 좀 더 읽기 쉬운 표현이 필요하다면'[mylist in x in styl (x)] '와 같은 일을하십시오. – kindall

관련 문제