使用Python和Selenium获取带重音字符的文本

时间:2015-12-02 11:13:42

标签: python selenium screen-scraping latin

我用python和selenium制作了一个抓取脚本。它从西班牙语网站上删除数据:

for i, line in enumerate(browser.find_elements_by_xpath(xpath)):
    tds = line.find_elements_by_tag_name('td')  # takes <td> tags from line
    print tds[0].text  # FIRST PRINT
    if len(tds)%2 == 0:  # takes data from lines with even quantity of cells only
        data.append([u"".join(tds[0].text), u"".join(tds[1].text), ])
    print data  # SECOND PRINT

第一个print语句给了我一个普通的西班牙语字符串。但第二次打印给我一个这样的字符串:"Data de Distribui\u00e7\u00e3o"。 这是什么原因?

2 个答案:

答案 0 :(得分:3)

你正在混合编码:

u'' # unicode string
b'' # bytearray string

text tds[0]属性是一个bytearray字符串,它编码不可知,你在第二个打印时使用unicode字符串,因此混合了编码

答案 1 :(得分:0)

要使用任何类型的重音字符,我们必须在使用它们之前先对其进行编码或解码

accent_char = "ôâ"
name = accent_char.decode('utf-8')
print(name)

以上代码将用于解码字符