0

我用 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

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

4

2 回答 2

3

您正在混合编码:

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

text属性tds[0]是一个与编码无关的字节数组字符串,并且您在第二个打印中使用 unicode 字符串进行操作,因此混合了编码

于 2015-12-02T11:25:38.950 回答
0

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

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

上面的代码将用于解码字符

于 2021-07-27T10:15:11.503 回答