문제

이 질문에는 이미 답변이 있습니다.

간단한 Python 정규 표현식을 사용하여 축구 웹 페이지에서 일부 정보를 긁어내고 싶습니다.문제는 첫 번째 챕터인 ΔäRITALO와 같은 플레이어가 ΔäRITALO로 나온다는 것입니다!
즉, html은 ä와 같은 특수 문자에 대해 이스케이프된 마크업을 사용합니다.

HTML을 올바른 Python 문자열로 읽는 간단한 방법이 있습니까?XML/XHTML이라면 쉬울 것이고 파서가 그렇게 할 것입니다.

도움이 되었습니까?

해결책

나는 추천하고 싶다 아름다운수프 HTML 스크래핑용.또한 다음과 같이 HTML 엔터티를 해당 유니코드 문자로 변환하도록 지시해야 합니다.

>>> from BeautifulSoup import BeautifulSoup    
>>> html = "<html>&#196;&#196;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진수에서는 작동하지 않습니다).

다른 팁

사용해 보세요 아름다운수프.그것은 트릭을 수행하고 작업하기에 좋은 형식의 DOM을 제공해야 합니다.

이 블로그 진입은 어느 정도 성공한 것 같습니다.

제가 직접 시도해본 적은 없지만, 혹시 시도해 보셨나요?

http://zesty.ca/python/scrape.html ?

원하는 것을 수행하는 htmldecode(text) 메소드가 있는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top