Python HTMLParser(编码='utf-8') 错误

Python HTMLParser(encoding='utf-8') error

当我打印这个时,我得到: ['Ordinateur', 'Impression', 'Tablette & Téléphonie ', 'Multimédia',...] 我想要的来自以下 ['Ordinateur', 'Impression', 'Tablette & Téléphonie ', 'Multimédia',...]

我想从网站的 header 中正确地抓取数据列表 这是我的代码:

from tkinter import *
import tkinter.ttk
from lxml import html
import requests
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import Select
from time import sleep
import csv
import os
import re


             
index="https://www.disway.com/"
p=requests.get(index)
pages_s=[]
script= html.fromstring(p.text,parser=html.HTMLParser(encoding='utf-16'))

pages_s.extend(script.xpath('//*[@id="7ea42b1d-f4c2-41af-9908-eaaec09f308c"]/li/a/text()'))
pages_s.extend(script.xpath('//*[@id="7ea42b1d-f4c2-41af-9908-eaaec09f308c"]/li/ul/li/a/text()'))
print(pages_s)

requests 认为网页是用 ISO-8859-1 编码的,但实际上是 UTF-8。网页未正确声明内容编码。使用 p.content 获取请求的原始字节,并将其解码为 UTF-8:

from lxml import html
import requests

index = "https://www.disway.com/"
p=requests.get(index)
pages_s = []
script = html.fromstring(p.content,parser=html.HTMLParser(encoding='utf8'))

pages_s.extend(script.xpath('//*[@id="7ea42b1d-f4c2-41af-9908-eaaec09f308c"]/li/a/text()'))
pages_s.extend(script.xpath('//*[@id="7ea42b1d-f4c2-41af-9908-eaaec09f308c"]/li/ul/li/a/text()'))
print(pages_s)

控制台输出:

['Ordinateur', 'Impression', 'Tablette & Téléphonie ', 'Multimédia', 'Accessoires', 'PC portable', 'PC bureau', 'Tout en un ', 'Options', 'Imprimante', 'Scanner', 'Terminal point de vente', 'Traceur', 'Copieur', 'Fax', 'Consommable', 'Options', 'Tablette', 'Smartphone ', 'Objet connecté', 'Casque & écouteurs', 'Options', 'Écran PC', 'Téléviseur', 'Vidéoprojecteur', 'Ecran projection', 'Visioconférence', 'Photo & vidéo', 'Options', 'Câble', 'Lecteur', 'Disque dur', 'Mémoire flash', 'Bagagerie', 'Clavier & souris', 'Barrette mémoire', 'Gaming', 'Audio', 'Webcam', 'Power bank', 'Multi-prise', 'Onduleur', 'Autres & divers']