2012-08-16 4 views
1

저는 웹 사이트에서 일부 문서를 자동으로 다운로드하는 웹 크롤러를 개발 중입니다. 그리고 알 수없는 인코딩을 사용합니다 (head 태그에 정의 된 charset 없음).urllib 인코딩 문제

아주 약간의 노력으로 사람들이 문서를 읽을 수 있습니다. 하지만 실제 문제는 문서를 나열하는 페이지가 강조된 문자가 포함 된 URL로 링크를 사용한다는 것입니다. 그러나 urllib2.urlopen에서 검색 할 때 페이지의 인코딩을 알지 못하면 문자가 엉망이됩니다.

Í 문자는 Cyrillic capital letter E입니다.

urllib2가 이미 잘못된 문자가있는 문서를 반환하기 때문에 BeautifulSoup을 사용하고 있으며 prettify가 작동하지 않습니다.

그리고 한 가지 더 : soup.originalEncodingNone을 반환합니다.

urllib2.urlopen을 charset을 인식하도록 설정하거나 "예상 인코딩"을 설정하여 브라우저에 표시된 문자를 반환하도록하려면 어떻게해야합니까?

+0

몇 가지 브라질 인코딩이 가능합니까? cp860? http://docs.python.org/library/codecs.html?highlight=codecs#standard-encodings – monkut

답변

2

헤더에서 문자 집합을 검색 할 수 있습니다. 내가 사용하는 코드를 제공 하겠지만 How to download any(!) webpage with correct charset in python?에서 파생됩니다. 그리고 그는 프로세스를 설명하는 더 나은 방법을 사용합니다. 그래서, 나는 그저 거기에서 당신을 가르 칠 것입니다.

+0

링크를 통과 한 솔루션이 실제로 효과를 발휘했습니다. 이전에 BeautifulSoup 생성자에서 fromEncoding 매개 변수를 설정하려고했지만 작동하지 않았습니다. 그러나 bs4에서 파이썬에서 좀 더 보편적 인 사용법 인 from_encoding으로 바꾸었고 정상적으로 작동합니다. 또한 나는 다음과 같은 솔루션을 적절하게 URL을 ascii 변환하는 데 사용 : http://stackoverflow.com/questions/804336/best-way-to-convert-a-unicode-url-to-ascii-utf-8-percent- 도망친 파이썬 고마워요! – Ken