2016-08-30 10 views
0

나는 그러나 모두 HTMLParserBeautifulSoupHTMLParser과 BeautifulSoup로 디코딩하지 HTML 엔티티가 제대로

HTML 소스 코드의 섹션에서 HTML entities를 해독하려고하지 둘 다 완벽하게 작동하는 것 같다입니다. 즉, 그들은 슬래시를 해독하지 않습니다. 내가 여기 실종 무엇

ORIGINAL STRING: api.soundcloud.com%2Ftracks%2F277561480&show_artwork=true&maxwidth=1050&maxheight=1000 

CLEANED WITH html.parser: api.soundcloud.com%2Ftracks%2F277561480&show_artwork=true&maxwidth=1050&maxheight=1000 

CLEANED WITH BeautifulSoup: [u'api.soundcloud.com%2Ftracks%2F277561480&show_artwork=true&maxwidth=1050&maxheight=1000'] 

:

내 파이썬 버전은 3.2.1

print 'ORIGINAL STRING: %s \n' % original_url_string 

#clean up 
try: 
    # Python 2.6-2.7 
    from HTMLParser import HTMLParser 
except ImportError: 
    # Python 3 
    from html.parser import HTMLParser 

h = HTMLParser() 
url_string = h.unescape(original_url_string) 

print 'CLEANED WITH html.parser: %s \n' % url_string 

decoded = BeautifulSoup(original_url_string,convertEntities=BeautifulSoup.HTML_ENTITIES) 

print 'CLEANED WITH BeautifulSoup: %s \n' % decoded.contents 

나에게 같은 출력을 제공합니다 2.7.11 버전 BeautifulSoup 함께?

URL을 추출하기 전에 전체 HTML 페이지를 디코딩해야합니까?

파이썬에서 더 좋은 방법이 있습니까?

답변

0

URL 또는 HTML의 슬래시를 디코딩하려고합니까?

슬래시를 디코딩하려는 경우에는 HTML entities이 아닌 퍼센트 인코딩 문자입니다. 당신이 HTML을 디코딩 할 경우

import urllib 
urllib.unquote(original_url_string) 
>>> 'api.soundcloud.com/tracks/277561480&show_artwork=true&maxwidth=1050&maxheight=1000' 

가 먼저 requests 또는 urllib

같은 패키지로 get에 있습니다

urllib

당신이 필요로하는 방법이있다