2014-06-14 2 views
0
from urllib.request import urlopen 
html = urlopen("http://www.google.com/").read().decode('utf-8').replace("preview","") 
from html.parser import HTMLParser 
class MyHTMLParser(HTMLParser): 
    def handle_data(self, data): 
     if any(c.isalpha() for c in data): 
      print(data) 
MyHTMLParser().feed(html) 
input() 

그래서 웹 사이트를보고 데이터를 저장하고 HTML의 기본 데이터를 표시하는 프로그램을 만들려고합니다. 이것은 완벽하게 Google에서도 작동하지만 IDLE에서도 완벽하게 작동하지만 cmd에 \u2605 (검은 색 별) 또는 \u00A9 (저작권)과 같은 유니 코드 문자가있는 다른 사이트는 오류를 표시합니다. 이 오류는 즉시 cmd 창을 닫습니다. 웹 사이트에 그들의 대부분 (교체)유니 코드 구문 분석 오류

"UnicodeEncodeError: 'charmap' codec can't encode character '\u2122' in position 8: character maps to (undefined)"

image

내가 많이 가질 수 있지만, 난 그냥 그것을 있도록 변환하는 간단한 방법이 확신 :. 역 추적은 그것을 읽을 수도 있고 단순히 ""로 대체 할 수도 있습니다.

답변

0

보고 후 : UnicodeEncodeError: 'charmap' codec can't encode - character maps to <undefined>, print function

다음 조언 # 2,이 솔루션은

html = urlopen("http://www.google.com/").read().encode(sys.stdout.encoding, errors='replace').decode('utf-8')` 

당신이 해독해야 할 수도 있습니다 sys을 수입하고 sys.stdout.encoding와 문자열과 errors='ignore'을 인코딩 포함 보인다 다시 한 번 ... 내 컴퓨터에서이 문제를 설정하지 않았기 때문에 나는 확신하지 못한다.

+0

html = urlopen ("http://www.google.com/") .read로 바 꾸었습니다.() .decode ('utf-8'). encode (sys. ('utf-8') 새로운 오류 유니 코드 디코딩 오류 'utf-8'코덱이 5311 위치의 바이트 0xff을 디코딩합니다 : 유효하지 않은 시작 바이트 – user3739743

+0

URLopen 메서드에 '오류'를 추가 할 수 있다고 생각합니다. – ForgetfulFellow

관련 문제