python3中使用selenium的编码问题

问题描述 投票:0回答:2

我在 scraping selenium python 中的 unicode 页面中遇到了奇怪的问题。 我正在分享完整的代码,该代码给了我错误的编码。我几乎尝试了所有方法,但到目前为止还没有成功,我们将不胜感激任何帮助。

# -*- coding: UTF-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as ec
import time


options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
options.add_argument("--headless")
options.add_argument("--window-size=1920x1080")
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
#options.add_experimental_option('prefs', {'intl.accept_languages': 'pt,pt_BR'})

chrome_path = '/var/www/chromedriver'
driver = webdriver.Chrome(chrome_path,  options=options)
driver.get("http://www.correios.com.br/solucoes-empresariais/correios-facil")
driver.implicitly_wait(10)
a = driver.find_elements_by_css_selector("p")
for i in a:
    s = i.text
    #s = s.encode("UTF-8")
    print(s)

driver.quit()

在输出中我得到了错误的编码,如下所示

作为大型运营商物流的解决方案,一个企业和企业的解决方案。 Fortaleça seu negócio,龙卷风-se um parceiro dos Correios。 com o Cartão Correios Fácil vocà terà acesso à vantageso exclusivas, preios diferenciados, ferramentas gratuitas e pagamento a prazo。 Adquira agora o seu Cartão Correios Fácil。可使用以下服务:Encomendas、Carta Comercial、Impresso、*CorreiosLog+、Certificaño Digital、**Produtos。 阿特努!可以获取数字化 seu 证书 (e-CNPJ)。 Caso não possua,小集团。 Se sua empresa ou o público que vocàªrepresenta, ainda não possui contrato com os Correios, ou se já possui e deseja ter acesso a outros services e condiçães ainda mais vantajosas, use a modalidade abaixo, Sistema Eletránico de Informaçãµes â SEI 的地址: 准备好,开始,然后再继续 Caso vocà queira ir direto para a página do SEI, clique aqui 在 caso de dívidas 中,请拨打 Central de Atendimento 电话 3003-0800。 *使用 CorreiosLog+ 逻辑服务,预演公式 http://www2.correios.com.br/servicos/falecomoscorreios/cliente_contrato.cfm 商业商业。 **Sujeito à disponibilidade。 “Clique aqui e conheça os Termos e Anexos dos Serviços contatados。”

python python-3.x encoding utf-8
2个回答
0
投票

检查您的系统编码:

import sys
import locale

print(sys.getfilesystemencoding())
print(locale.getpreferredencoding())

很可能不是 UTF-8。 所以你必须改变它:

sudo nano /etc/default/locale

使用

locale -a
获取可用区域设置的列表。


-1
投票

试试这个:

    test = ' Relógio feminino dourado '
    label =  test.encode('latin-1').decode('utf-8')

有关编码的更多信息:https://docs.python.org/3/library/codecs.html#standard-encodings

© www.soinside.com 2019 - 2024. All rights reserved.