BeautifulSoup:无法将NavigableString转换为字符串

时间:2016-02-11 01:13:28

标签: python-3.x beautifulsoup

我开始学习Python,我决定编写一个简单的刮刀。我遇到的一个问题是我无法将NavigableString转换为常规字符串。

使用BeautifulSoup4和Python 3.5.1。我应该咬紧牙关,去看早期版本的Python和BeautifulSoup吗?还是有办法 我可以编写自己的函数来将NavigableString转换为常规的unicode字符串吗?

for tag in soup.find_all("span"):
    for child in tag.children:
        if "name" in tag.string: #triggers error, can't compare string to NavigableString/bytes
            return child

    #things i've tried:
    #if "name" in str(tag.string)
    #if "name" in unicode(tag.string) #not in 3.5?
    #if "name" in strring(tag.string, "utf-8")
    #tried regex, didn't work. Again, doesn't like NavigableSTring type. 
    #... bunch of other stuff too!

4 个答案:

答案 0 :(得分:5)

我试图解码我应该编码的时间:

str(child.encode('utf-8'))

答案 1 :(得分:2)

对于Python 3,答案仅仅是 str(tag.string)

其他答案将失败。

unicode()不是Python 3内置的。

tag.string.encode('utf-8')会将字符串转换为您不需要的字节字符串。

答案 2 :(得分:1)

你可以这样做:

unicode(tag.string)

答案 3 :(得分:0)

我想到了这个问题,How to remove this \xa0 from a string in python?的马克·拉姆森(Mark Ramson)的答案很好地解决了问题

import unidecode
word = unidecode.unidecode(tag.string)