2012-04-15 2 views
0

python2.7과 lxml을 사용하여 페이지를 가져옵니다. 아래 오류가 계속 발생합니다.)python과 lxml을 사용하여 페이지를 크롤링했습니다. (<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError ('ascii',

(<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'Approximate Dimensions: 4\xbd" x 4" x 7" (assembled)', 25, 26, 'ordinal not in range(128)'), <traceback object at 0x7f9198ac48c0>) 

나는 다음과 같은 시도 :

doc = lxml.html.document_fromstring(html) 
for el in doc.iter('h2'): 
    el.text_content().decode('utf-8','ignore') 
    OR 
    el.text_content().encode('ascii', 'ignore') 

내가 이러한 오류를 해결하기 위해 어떻게) 일에 할 수있는 텍스트 파일 다음 2로 저장) MySQL로 텍스트 파일을 업로드해야합니다.

감사

답변

2

시도 :

el.text_content().encode('utf-8') 

은 유니 코드, 당신은 UTF-8로 (텍스트로)을 저장할.

+0

흠하면 unicodestr 변환 적절한 인코딩을 디코딩한다 ('U'로 시작) ... 시도 ... .still the same result – Tampa

+0

그런 다음 더 많은 컨텍스트, 즉 추적 코드와이 코드가 참조하는 코드와 데이터베이스/테이블/열에 대해 설정 한 인코딩을 제공해야합니다. – thebjorn

0

페이지 인코딩이 실제로 사용되는 것과 다를 수 있다고 헤더에서 말한 헤더는 무엇입니까? 페이지의 실제 인코딩이 utf-8이 아닌 경우 올바른 비즈니스를 수행하는 데 약간의 교묘함이 있습니다. 당신은 여전히 ​​/x09 같은 일부 인코딩 된 문자열, 그것은 아직 디코딩되지 의미합니다 경우

는 먼저 el.text_content()

x = el.text_content() print x

에서 반환 된 텍스트를 보일 것입니다. X는 유니이면

(같은 cp1252 또는 STH)

chars = ''.join([chr(ord(x)) for x in el.text_content()]) /// It will change your dumb unicode to str result = chars.decode({try with different encoding until it doesn't throw an error}) /// now you decode str with proper format

관련 문제