我用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"
。
这是什么原因?
答案 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)
以上代码将用于解码字符