HTMLParser和BeautifulSoup无法正确解码HTML实体

2024-04-19 12:55:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从HTML源代码的一段中解码HTML entities,同时使用HTMLParser和{}

然而,两者似乎都不完全有效。也就是说他们不解码斜杠。在

我的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

输出如下:

^{pr2}$

我错过了什么?在

在拉出URL之前,是否应该尝试解码整个HTML页面?在

有没有更好的方法来使用Python实现这一点?在


Tags: fromimport版本parserurlstringhtmlwith
1条回答
网友
1楼 · 发布于 2024-04-19 12:55:50

你是想从url或url的html中解码斜杠吗?在

如果您试图解码斜杠,它们不是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或{}

相关问题 更多 >