相关疑难解决方法(0)

在Python字符串中解码HTML实体?

我正在使用Beautiful Soup 3解析一些HTML,但它包含HTML实体,Beautiful Soup 3不会自动为我解码:

>>> from BeautifulSoup import BeautifulSoup

>>> soup = BeautifulSoup("<p>&pound;682m</p>")
>>> text = soup.find("p").string

>>> print text
&pound;682m
Run Code Online (Sandbox Code Playgroud)

我怎样才能解码HTML实体中text获得"£682m",而不是"&pound;682m".

html python html-entities

239
推荐指数
4
解决办法
20万
查看次数

使用Python从HTML文件中提取文本

我想使用Python从HTML文件中提取文本.如果我从浏览器复制文本并将其粘贴到记事本中,我想要的输出基本相同.

我想要比使用可能在格式不正确的HTML上失败的正则表达式更强大的东西.我见过很多人推荐Beautiful Soup,但是我使用它时遇到了一些问题.首先,它选择了不需要的文本,例如JavaScript源代码.此外,它没有解释HTML实体.例如,我希望' 在HTML源代码中转换为文本中的撇号,就像我将浏览器内容粘贴到记事本中一样.

更新 html2text看起来很有希 它正确处理HTML实体并忽略JavaScript.但是,它并不完全产生纯文本; 它会产生降价,然后必须将其转换为纯文本.它没有示例或文档,但代码看起来很干净.


相关问题:

html python text html-content-extraction

222
推荐指数
12
解决办法
32万
查看次数

如何使用Python/Django执行HTML解码/编码?

我有一个html编码的字符串:

'''&lt;img class=&quot;size-medium wp-image-113&quot;\
 style=&quot;margin-left: 15px;&quot; title=&quot;su1&quot;\
 src=&quot;http://blah.org/wp-content/uploads/2008/10/su1-300x194.jpg&quot;\
 alt=&quot;&quot; width=&quot;300&quot; height=&quot;194&quot; /&gt;'''
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 django html-encode

122
推荐指数
9
解决办法
17万
查看次数

62
推荐指数
6
解决办法
6万
查看次数

用Python 2.6中的相应utf-8字符替换html实体

我有一个像这样的HTML文本:

&lt;xml ... &gt;
Run Code Online (Sandbox Code Playgroud)

我想把它转换成可读的东西:

<xml ...>
Run Code Online (Sandbox Code Playgroud)

用Python做任何简单(快速)的方法吗?

python python-2.6 html-entities

13
推荐指数
1
解决办法
2万
查看次数

将#39改为正常角色

我在显示内容时遇到问题,我的程序:

#! /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 &#39;Hotel of Doom&#39;
Ex-NFL QB&#39;s sad condition
Reporter ignores warning
Romney&#39;s low bar for debates
Run Code Online (Sandbox Code Playgroud)

所以问题是我应该在代码中包含什么才能将#39变换为字符

html python character-encoding

8
推荐指数
2
解决办法
5382
查看次数

从网页获取国际字符?

我想使用简单的python regexp从足球(足球)网页上删除一些信息.问题在于,像第一个小伙子,ÄRITALO这样的球员出现了ÄÄ RITALO!
也就是说,html对特殊字符使用转义标记,例如Ä

有没有一种简单的方法将html读入正确的python字符串?如果它是XML/XHTML那么很容易,解析器会这样做.

html python unicode parsing

7
推荐指数
1
解决办法
1743
查看次数

我如何摆脱像 ' 这样的字符 出现而不是撇号?

可能的重复:
在 Python 中将 XML/HTML 实体转换为 Unicode 字符串

我正在尝试使用 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 regex screen-scraping beautifulsoup web-scraping

6
推荐指数
1
解决办法
4万
查看次数

从python中的字符串安全地删除所有html代码

我一直在阅读很多关于如何使用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 security parsing utf-8

5
推荐指数
1
解决办法
1799
查看次数

HTMLParser.HTMLParser().unescape()不起作用

我想将HTML实体转换回人类可读格式,例如'&pound;''£','&deg;''°'等.

我已经阅读了几个关于这个问题的帖子

使用Python 2.x将html源代码内容转换为可读格式

在Python字符串中解码HTML实体?

在Python中将XML/HTML实体转换为Unicode字符串

根据他们的说法,我选择使用未记录的函数unescape(),但它对我不起作用...

我的代码示例如下:

import HTMLParser

htmlParser = HTMLParser.HTMLParser()
decoded = htmlParser.unescape('&copy; 2013')
print decoded
Run Code Online (Sandbox Code Playgroud)

当我运行这个python脚本时,输出仍然是:

&copy; 2013
Run Code Online (Sandbox Code Playgroud)

代替

© 2013
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 2.X,在Windows 7和Cygwin控制台上工作.我用谷歌搜索,没有发现任何类似的问题.有人可以帮我这个吗?

html python unicode

4
推荐指数
3
解决办法
1万
查看次数