웹 페이지에서 국제 문자를 얻으시겠습니까?[복제하다]
문제
이 질문에는 이미 답변이 있습니다.
간단한 Python 정규 표현식을 사용하여 축구 웹 페이지에서 일부 정보를 긁어내고 싶습니다.문제는 첫 번째 챕터인 ΔäRITALO와 같은 플레이어가 ΔäRITALO로 나온다는 것입니다!
즉, html은 ä와 같은 특수 문자에 대해 이스케이프된 마크업을 사용합니다.
HTML을 올바른 Python 문자열로 읽는 간단한 방법이 있습니까?XML/XHTML이라면 쉬울 것이고 파서가 그렇게 할 것입니다.
해결책
나는 추천하고 싶다 아름다운수프 HTML 스크래핑용.또한 다음과 같이 HTML 엔터티를 해당 유니코드 문자로 변환하도록 지시해야 합니다.
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(표준이면 좋겠지만 코덱 모듈에는 이를 위한 코덱이 포함되어 있습니다. "some_string".decode('html_entities')
하지만 불행히도 그렇지 않습니다!)
편집하다:또 다른 해결책:Python 개발자 Fredrik Lundh(elementtree의 저자 등)는 HTML 엔터티의 보안을 해제하는 기능 10진수, 16진수 및 명명된 엔터티와 작동하는 그의 웹사이트에 있습니다(BeautifulSoup은 16진수에서는 작동하지 않습니다).
다른 팁
제가 직접 시도해본 적은 없지만, 혹시 시도해 보셨나요?
http://zesty.ca/python/scrape.html ?
원하는 것을 수행하는 htmldecode(text) 메소드가 있는 것 같습니다.
제휴하지 않습니다 StackOverflow