2014-11-21 4 views
0

내가 나 한테 전화 전화 번호의 이름을 취득 할 수 이것은 내 코드입니다 : 더 "특별한 존재하지 않는 경우모든 UTF-8입니다 ..하지만 난 단지 먼지

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import lxml.html 

telnr="0306636793" 
root=lxml.html.parse("http://www.11880.com/rueckwaertssuche/%s"%telnr).getroot() 
h3=root.cssselect('h3') 
print h3[0].text_content() 

그것은 좋은 작품 문자 "(독일어"Umlaute "와 같이) 결과에 나타납니다.

하지만 ... 예를 들어 ... "뮐러, 에곤"이 나를 부르면, 나는 "뮬러, 에곤"을 얻습니다.

올바른 인코딩으로 결과를 얻으려면 무엇을해야합니까?

+0

결과에 올바른 인코딩이있을 수 있지만 인쇄하는 모든 곳 (예 : 단말기)에서는 그렇지 않을 수 있습니다. – BrenBarn

+0

아니요. 코드를 wxpython-programm에 넣고 개발자 이름을 추가했습니다. d = h3 [0] .text_content() info.AddDeveloper (d) 대화 상자에 "Müller, Egon"이 표시됩니다. – dede

+0

인쇄 h3 [0] .text_content(). encode ("ISO 8859-1")도 트릭을 수행했지만 .... 이해가 안되는 이유는 ...!? – dede

답변

2

this pagethis question에 따르면 lxml.html.parse은 페이지 인코딩을 올바르게 처리하지 않습니다. 당신은 이런 식으로 작업을 수행해야합니다 내가 lxml에 무슨 일이 일어나고 있는지 확실하지 않다

import lxml.html 

telnr = "0306636793" 
p = lxml.html.HTMLParser(encoding='utf-8') 
root = lxml.etree.parse("http://www.11880.com/rueckwaertssuche/%s"%telnr, parser=p).getroot() 
h3 = root.cssselect(b'h3') 
txt = h3[0].text_content() 
+0

나는 오직 AttributeError만을 얻습니다 : 'lxml.etree._Element'객체는 'cssselect'속성이 없습니다! – dede

+0

전체 코드 스 니펫으로 답변을 업데이트했습니다. 그것은 나를 위해 작동합니다. 동일한 코드를 사용하고 있습니까? – BrenBarn

+0

나는 lxml.html.parse로 시도했다. lxml.etree.parse :-)와 함께 훌륭하게 작동하며 python-bs4를 설치할 필요가 없으며 내 표준 opensses-repos에 없습니다. – dede

0

을,하지만 난 requestsBeautifulSoup를 사용하여 해결 방법을 마련 할 수 있었다 :

import requests 
from bs4 import BeautifulSoup 

telnr = "0306636793" 
r = requests.get("http://www.11880.com/rueckwaertssuche/%s" % telnr) 
soup = BeautifulSoup(r.text) 
name = soup.find_all('h3')[0].text 
print(name) 

이 실행 제공 :

$ python telnr.py 
Müller, Egon 
관련 문제