08 python之網路爬蟲之亂碼問題

2022-04-10 15:51:30 字數 1751 閱讀 5856

亂碼問題有三種解決方式,下面我們通過乙個示例進行理解

示例:爬取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 值 字典的作用和列表類似,都是用來儲存物件的容器 列表...