我正在使用Beautiful Soup 3解析一些HTML,但它包含HTML实体,Beautiful Soup 3不会自动为我解码:
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<p>£682m</p>")
>>> text = soup.find("p").string
>>> print text
£682m
Run Code Online (Sandbox Code Playgroud)
我怎样才能解码HTML实体中text获得"£682m",而不是"£682m".
我想使用Python从HTML文件中提取文本.如果我从浏览器复制文本并将其粘贴到记事本中,我想要的输出基本相同.
我想要比使用可能在格式不正确的HTML上失败的正则表达式更强大的东西.我见过很多人推荐Beautiful Soup,但是我使用它时遇到了一些问题.首先,它选择了不需要的文本,例如JavaScript源代码.此外,它没有解释HTML实体.例如,我希望' 在HTML源代码中转换为文本中的撇号,就像我将浏览器内容粘贴到记事本中一样.
更新 html2text看起来很有希 它正确处理HTML实体并忽略JavaScript.但是,它并不完全产生纯文本; 它会产生降价,然后必须将其转换为纯文本.它没有示例或文档,但代码看起来很干净.
相关问题:
我有一个html编码的字符串:
'''<img class="size-medium wp-image-113"\
style="margin-left: 15px;" title="su1"\
src="http://blah.org/wp-content/uploads/2008/10/su1-300x194.jpg"\
alt="" width="300" height="194" />'''
Run Code Online (Sandbox Code Playgroud)
我想将其改为:
<img class="size-medium wp-image-113" style="margin-left: 15px;"
title="su1" src="http://blah.org/wp-content/uploads/2008/10/su1-300x194.jpg"
alt="" width="300" height="194" />
Run Code Online (Sandbox Code Playgroud)
我希望将其注册为HTML,以便浏览器将其呈现为图像,而不是显示为文本.
我已经在C#中找到了如何做到这一点,但在Python中却没有.有人可以帮我吗?
谢谢.
编辑:有人问为什么我的字符串存储就像那样.这是因为我正在使用网络抓取工具"扫描"网页并从中获取某些内容.该工具(BeautifulSoup)以该格式返回字符串.
可能重复:
如何在Python中将HTML实体转换为Unicode,反之亦然?
我有一个像这样的HTML文本:
<xml ... >
Run Code Online (Sandbox Code Playgroud)
我想把它转换成可读的东西:
<xml ...>
Run Code Online (Sandbox Code Playgroud)
用Python做任何简单(快速)的方法吗?
我在显示内容时遇到问题,我的程序:
#! /usr/bin/python
import urllib
import re
url = "http://yahoo.com"
pattern = '''<span class="medium item-label".*?>(.*)</span>'''
website = urllib.urlopen(url)
pageContent = website.read()
result = re.findall(pattern, pageContent)
for record in result:
print record
Run Code Online (Sandbox Code Playgroud)
输出:
Masked teen killed by dad
First look in 'Hotel of Doom'
Ex-NFL QB's sad condition
Reporter ignores warning
Romney's low bar for debates
Run Code Online (Sandbox Code Playgroud)
所以问题是我应该在代码中包含什么才能将#39变换为字符
我想使用简单的python regexp从足球(足球)网页上删除一些信息.问题在于,像第一个小伙子,ÄRITALO这样的球员出现了ÄÄ RITALO!
也就是说,html对特殊字符使用转义标记,例如Ä
有没有一种简单的方法将html读入正确的python字符串?如果它是XML/XHTML那么很容易,解析器会这样做.
我正在尝试使用 Python 抓取网站。我导入并使用 urllib2、BeautifulSoup 和 re 模块。
response = urllib2.urlopen(url)
soup = BeautifulSoup(response)
responseString = str(soup)
coarseExpression = re.compile('<div class="sodatext">[\n]*.*[\n]*</div>')
coarseResult = coarseExpression.findall(responseString)
fineExpression = re.compile('<[^>]*>')
fineResult = []
for coarse in coarseResult:
fine = fineExpression.sub('', coarse)
#print(fine)
fineResult.append(fine)
Run Code Online (Sandbox Code Playgroud)
不幸的是,像撇号这样的字符以损坏的方式出现,就像这样 - ' ; 有办法避免这种情况吗?或者有什么方法可以轻松替换它们?
我一直在阅读很多关于如何使用python从字符串中删除所有html代码的q&a,但没有一个令人满意.我需要一种方法来删除所有标签,保留/转换html实体并使用utf-8字符串.
显然,BeautifulSoup容易受到一些特制的html字符串的影响,我用HTMLParser构建了一个简单的解析器来获取文本,但是我丢失了实体
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.data = []
def handle_data(self, data):
self.data.append(data)
def handle_charref(self, name):
self.data.append(name)
def handle_entityref(self, ent):
self.data.append(ent)
Run Code Online (Sandbox Code Playgroud)
给我一些类似的东西
[u'Asia,sp',u'cialiste du voyage',...
在spécialiste中失去了重音"e"的实体.
使用众多正则表达式中的一个,您可以找到类似问题的答案,它总会有一些未考虑的边缘情况.
我可以用任何真正好的模块吗?
我想将HTML实体转换回人类可读格式,例如'£''£','°''°'等.
我已经阅读了几个关于这个问题的帖子
在Python中将XML/HTML实体转换为Unicode字符串
根据他们的说法,我选择使用未记录的函数unescape(),但它对我不起作用...
我的代码示例如下:
import HTMLParser
htmlParser = HTMLParser.HTMLParser()
decoded = htmlParser.unescape('© 2013')
print decoded
Run Code Online (Sandbox Code Playgroud)
当我运行这个python脚本时,输出仍然是:
© 2013
Run Code Online (Sandbox Code Playgroud)
代替
© 2013
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 2.X,在Windows 7和Cygwin控制台上工作.我用谷歌搜索,没有发现任何类似的问题.有人可以帮我这个吗?
python ×10
html ×7
parsing ×2
unicode ×2
django ×1
html-encode ×1
python-2.6 ×1
regex ×1
security ×1
text ×1
utf-8 ×1
web-scraping ×1