亂碼問題有三種解決方式,下面我們通過乙個示例進行理解
示例:爬取4k美女桌布中的
import requests
from lxml import etree
import os
from urllib import request
if not os.path.exists("4kmeimei"):
os.mkdir("4kmeimei")
headers =
url = ''
# 第一種去除亂碼方式 -> 直接拿到亂碼的文字內容,進行解碼
page_text = requests.get(url=url,headers=headers).content.decode("gbk")
# 第二種去除編碼的格式 -> 常規使用,拿到物件進行編碼,在取出文字
response = requests.get(url=url,headers=headers)
response.encoding = 'gbk'
page_text = response.text
# 第三種去除編碼的格式 -> 比較麻煩,但最好用
response = requests.get(url=url,headers=headers)
# 檢查請求到的原始碼資料的編碼個格式
# print(response.encoding)
page_text = response.text
# 第三種這麼麻煩為什麼要去這樣寫呢?
# 好處:這樣寫,幾乎任何形式的亂碼,都可以處理
# # print(page_text)
# 例項化乙個etree物件
tree = etree.html(page_text)
li_list = tree.xpath('//div[@class="slist"]/ul/li')
for li in li_list:
img_src = li.xpath('./a/@href')[0]
img_src = "" + img_src
img_name = li.xpath('./a/img/@alt')[0]
# img_name = img_name.encode('iso-8859-1').decode("gbk") #第三種去除編碼格式
# print(img_src,img_name)
detail_page_text = requests.get(url=img_src,headers=headers).content.decode("gbk")
# 例項化乙個etree物件,跟上面哪個例項化物件沒有關係
在爬取過程中,建議先使用前兩種,如果不能解決亂碼問題,在使用最後一種
08 python基礎學習 0412
知識點學習 1.list複習,tuple學習 list列表 一種資料型別,有序集合,可以任意新增刪除元素。tuple 的缺陷 當你定義乙個tuple時,在定義的時候,tuple 的元素就必須被確定下來。eg t 1,2 t 1,2 1.定義乙個空tuple tuple 2.定義只有乙個元素的tupl...
08Python學習函式講解
定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 特性 減少重複 使程式變的可擴充套件 使程式變得易維護 deffuncname v 定義函式名,形參.print v funcname hello 呼叫函式 hello正常情況下,給函式傳引數要按順...
08 python 元組 字典 集合
4.遍歷字典 5.集合 元組基本介紹 python中,數值型別 int和float 字串str 元組tuple都是不可變型別。而列表list 字典dict 集合set是可變型別 可變物件中都儲存了三個資料 id 標識 type 型別 value 值 字典的作用和列表類似,都是用來儲存物件的容器 列表...