2016-08-30 6 views
0

Я пытаюсь расшифровать HTML entities из раздела HTML исходного кода и с HTMLParser и BeautifulSoupHTMLparser и BeautifulSoup не декодирует HTML сущности правильно

Однако ни, кажется, работает полностью. А именно, они не декодируют косые черты.

Мой Python версии 2.7.11 с BeautifulSoup версия 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 

дает мне выход, как:

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'] 

Что я здесь отсутствует?

Должен ли я попытаться декодировать всю страницу HTML, прежде чем вытаскивать URL-адреса?

Есть ли лучший способ сделать это с помощью Python?

ответ

0

Вы пытаетесь декодировать косые черты с URL-адреса или URL-адреса url?

Если вы пытаетесь декодировать косые черты, то они не являются HTML entities, а имеют процентные символы.

urllib имеет метод вам нужно:

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

Если вы хотите расшифровать HTML, вы сначала должны get его с пакетом, как requests или urllib

 Смежные вопросы

  • Нет связанных вопросов^_^