用python爬取電腦壁紙實(shí)例代碼
前言
聽說(shuō)好的編程習(xí)慣是從寫文章敲代碼開始的,下面給大家介紹一個(gè)簡(jiǎn)單的python爬取圖片的過(guò)程,超簡(jiǎn)單。我都不好意思寫,但是主要是捋一下爬取過(guò)程。本文只是技術(shù)交流的,請(qǐng)不要商業(yè)用途哈
一、用到的工具
使用python爬蟲工具,我使用的工具就是學(xué)習(xí)python都會(huì)用的的工具,一個(gè)是pycharm,一個(gè)是chrome,使用chrome只是我的個(gè)人習(xí)慣,也可以用其他的瀏覽器,我除了這兩個(gè)軟件還用到了window自帶的瀏覽器。
二、爬取步驟與過(guò)程
1.用到的庫(kù)
爬取圖片我主要用到了爬蟲初學(xué)的requests請(qǐng)求模塊和xpath模塊,這用xpath只是為了方便找圖片的鏈接和路徑的,當(dāng)然也可以用re模塊和Beautiful Soup模塊這些。time模塊是為了后續(xù)下載圖片做延時(shí)的,畢竟要保護(hù)下網(wǎng)站,Pinyin模塊里面有個(gè)程序要將中文轉(zhuǎn)成拼音。
import time import pinyin import requests from lxml import etree #這是導(dǎo)入xpath模塊
2.解析代碼
首先輸入選擇圖片類型和圖片的也網(wǎng)址頁(yè)碼,因?yàn)橐环N類型的圖片有很多圖片的,一個(gè)網(wǎng)頁(yè)是放不下的這就需要選擇多個(gè)頁(yè)碼。
type=input("請(qǐng)輸入圖片的類型:") type=pinyin.get(f"{type}",format="strip") #這是將輸入的中文轉(zhuǎn)成拼音,format是為了去掉拼音的聲標(biāo) m=input("請(qǐng)輸入圖片的頁(yè)碼:") #圖片類型所在網(wǎng)頁(yè)的頁(yè)碼
接下來(lái)就請(qǐng)求網(wǎng)址了,其中先獲取網(wǎng)址的源代碼,然后通過(guò)xpath獲取圖片的鏈接和名字,為什么是小圖片呢,因?yàn)橐粋€(gè)網(wǎng)頁(yè)要顯示很多圖片,如果是大圖片,一個(gè)網(wǎng)頁(yè)只能放一張的。
url=f"https://pic.netbian.com/4k{type}/index_{m}.html" header={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" } resp=requests.get(url=url,headers=header) resp.encoding="gbk" tree=etree.HTML(resp.text) tu_links=tree.xpath('//*[@id="main"]/div[3]/ul/li/a/@href') #小圖片的鏈接 tu_names=tree.xpath('//*[@id="main"]/div[3]/ul/li/a/b/text()') #圖片的名字
接下來(lái)就是一層一層的找圖片的鏈接,和下載地址,也就是一個(gè)查找的循環(huán)操作。
tu_link.split() child_url = url.split(f'/4k{type}/')[0] + tu_link #將小圖片的部分鏈接和主鏈接拼接起來(lái) resp1 = requests.get(url=child_url, headers=header) #打開小圖片的網(wǎng)址 resp1.encoding = 'gbk' tree1 = etree.HTML(resp1.text) child_tu_link= tree1.xpath('/html/body/div[2]/div[1]/div[2]/div[1]/div[2]/a/img/@src') #獲取大圖片的部分鏈接 child_tu_link=child_tu_link[0] child_tu_link_over=url.split(f'/4k{type}/')[0]+child_tu_link #將大圖片鏈接拼接起來(lái) resp2=requests.get(child_tu_link_over,headers=header) #獲取大圖片
最后就是下載圖片啦
with open(f"壁紙圖片/{name}.jpg",mode="wb") as f: #接下來(lái)就是下載了 f.write(resp2.content)
來(lái)看看最后的效果吧
3.最后上全部的代碼啦
這就是簡(jiǎn)簡(jiǎn)單單的爬取圖片的代碼,完全沒(méi)有用到什么復(fù)雜的知識(shí),簡(jiǎn)簡(jiǎn)單單,你值得擁有哈哈
import time import pinyin import requests from lxml import etree #這是導(dǎo)入xpath模塊 type=input("請(qǐng)輸入圖片的類型:") type=pinyin.get(f"{type}",format="strip") #這是將輸入的中文轉(zhuǎn)成拼音,format是為了去掉拼音的聲標(biāo) m=input("請(qǐng)輸入圖片的頁(yè)碼:") #圖片類型所在網(wǎng)頁(yè)的頁(yè)碼 url=f"https://pic.netbian.com/4k{type}/index_{m}.html" header={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" } resp=requests.get(url=url,headers=header) resp.encoding="gbk" tree=etree.HTML(resp.text) tu_links=tree.xpath('//*[@id="main"]/div[3]/ul/li/a/@href') #小圖片的部分鏈接 tu_names=tree.xpath('//*[@id="main"]/div[3]/ul/li/a/b/text()') #圖片的名字 n=0 for tu_link in tu_links: tu_link.split() child_url = url.split(f'/4k{type}/')[0] + tu_link #將小圖片的部分鏈接和主鏈接拼接起來(lái) resp1 = requests.get(url=child_url, headers=header) #打開小圖片的網(wǎng)址 resp1.encoding = 'gbk' tree1 = etree.HTML(resp1.text) child_tu_link= tree1.xpath('/html/body/div[2]/div[1]/div[2]/div[1]/div[2]/a/img/@src') #獲取大圖片的部分鏈接 child_tu_link=child_tu_link[0] child_tu_link_over=url.split(f'/4k{type}/')[0]+child_tu_link #將大圖片鏈接拼接起來(lái) resp2=requests.get(child_tu_link_over,headers=header) #獲取大圖片 name=tu_names[n] with open(f"壁紙圖片/{name}.jpg",mode="wb") as f: #接下來(lái)就是下載了 f.write(resp2.content) print(f"{name} 下載完畢!!") n+=1 #每下載一張圖片n就加1 time.sleep(1.5) resp1.close() print("全部下載完畢??!") #over!over! resp.close() #最后記得要把所有請(qǐng)求的響應(yīng)關(guān)閉
注意:本文章只用于技術(shù)交流,請(qǐng)勿用于商用,如有違反,吾概不負(fù)責(zé)?。。?/strong>
總結(jié)
到此這篇關(guān)于用python爬取電腦壁紙實(shí)例代碼的文章就介紹到這了,更多相關(guān)python爬取電腦壁紙內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解java調(diào)用python的幾種用法(看這篇就夠了)
這篇文章主要介紹了詳解java調(diào)用python的幾種用法(看這篇就夠了),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python內(nèi)置函數(shù)之eval函數(shù)詳解
這篇文章主要為大家介紹了python內(nèi)置函數(shù)之eval函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01Python異常處理與反射相關(guān)問(wèn)題總結(jié)
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python異常處理與反射展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06深入探索Python解碼神器Chardet自動(dòng)檢測(cè)文本編碼
Chardet,洞察編碼的清晰水晶球,一個(gè)讓你與編碼不再“失聯(lián)”的神器,本文帶大家走近這個(gè)隱藏在Python工具箱中的小寶貝,探索它的秘密2024-01-01face_recognition庫(kù)在python的安裝
這篇文章主要介紹了face_recognition庫(kù)在python的安裝,解決了一些沒(méi)有安裝時(shí)出現(xiàn)的一些錯(cuò)誤,需要的朋友可以參考下2021-04-04Python內(nèi)存管理器如何實(shí)現(xiàn)池化技術(shù)
Python中的內(nèi)存管理是從三個(gè)方面來(lái)進(jìn)行的,一對(duì)象的引用計(jì)數(shù)機(jī)制,二垃圾回收機(jī)制,三內(nèi)存池機(jī)制,下面這篇文章主要給大家介紹了關(guān)于Python內(nèi)存管理器如何實(shí)現(xiàn)池化技術(shù)的相關(guān)資料,需要的朋友可以參考下2022-05-05Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問(wèn)題
這篇文章主要介紹了Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07