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']
当我打印这个时,我得到:
['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']