我正试图用这样的新闻标题来搜集RSS:
<title>Photo of iceberg that is believed to have sunk Titanic sold at auction for £21,000 alongside &#039;world&#039;s most valuable biscuit&#039;</title>
这就是我用靓汤刮的方法:
soup = BeautifulSoup(xml, 'xml')
start = soup.findAll('item')
for i in start:
news, is_created = News.create_or_update(news_id,
head_line=i.title.text.encode('utf-8').strip(),
...)
尽管如此,标题仍然是这样的:
Photo of iceberg that is believed to have sunk Titanic sold at auction for \xa321,000 alongside 'world's most valuable biscuit'
将这些特殊字符转换成ASCII字符会更容易吗?你知道吗
对于您提供的示例,这对我很有用:
html.unescape
处理HTML实体。如果Beautiful Soup没有正确处理磅符号,那么在创建BeautifulSoup
对象时可能需要指定编码,例如我终于相信找到了问题所在。上面这些字符是XML中转义的HTML。真是一团糟。如果你看《独立报》的RSS,大多数标题都会受到这样的影响。你知道吗
所以这不是UTF8的问题。在转换为UTF8之前,如何对标题中的任何html字符进行编码?你知道吗
我用HTMLParser去掉标题,然后用UTF8编码来解决这个问题。马可的回答基本上是一样的。但是
html
库不适合我。你知道吗我不建议使用
from_encoding='latin-1'
,因为它会导致其他问题。具有unescaping
和encode('utf-8')
的解决方案足以将£解码为\xa3
,这是合适的Unicode字符。你知道吗相关问题 更多 >
编程相关推荐