用python爬取電腦壁紙實例代碼
前言
聽說好的編程習(xí)慣是從寫文章敲代碼開始的,下面給大家介紹一個簡單的python爬取圖片的過程,超簡單。我都不好意思寫,但是主要是捋一下爬取過程。本文只是技術(shù)交流的,請不要商業(yè)用途哈
一、用到的工具
使用python爬蟲工具,我使用的工具就是學(xué)習(xí)python都會用的的工具,一個是pycharm,一個是chrome,使用chrome只是我的個人習(xí)慣,也可以用其他的瀏覽器,我除了這兩個軟件還用到了window自帶的瀏覽器。
二、爬取步驟與過程
1.用到的庫
爬取圖片我主要用到了爬蟲初學(xué)的requests請求模塊和xpath模塊,這用xpath只是為了方便找圖片的鏈接和路徑的,當然也可以用re模塊和Beautiful Soup模塊這些。time模塊是為了后續(xù)下載圖片做延時的,畢竟要保護下網(wǎng)站,Pinyin模塊里面有個程序要將中文轉(zhuǎn)成拼音。
import time import pinyin import requests from lxml import etree #這是導(dǎo)入xpath模塊
2.解析代碼
首先輸入選擇圖片類型和圖片的也網(wǎng)址頁碼,因為一種類型的圖片有很多圖片的,一個網(wǎng)頁是放不下的這就需要選擇多個頁碼。
type=input("請輸入圖片的類型:") type=pinyin.get(f"{type}",format="strip") #這是將輸入的中文轉(zhuǎn)成拼音,format是為了去掉拼音的聲標 m=input("請輸入圖片的頁碼:") #圖片類型所在網(wǎng)頁的頁碼
接下來就請求網(wǎng)址了,其中先獲取網(wǎng)址的源代碼,然后通過xpath獲取圖片的鏈接和名字,為什么是小圖片呢,因為一個網(wǎng)頁要顯示很多圖片,如果是大圖片,一個網(wǎng)頁只能放一張的。
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()') #圖片的名字
接下來就是一層一層的找圖片的鏈接,和下載地址,也就是一個查找的循環(huán)操作。
tu_link.split() child_url = url.split(f'/4k{type}/')[0] + tu_link #將小圖片的部分鏈接和主鏈接拼接起來 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 #將大圖片鏈接拼接起來 resp2=requests.get(child_tu_link_over,headers=header) #獲取大圖片
最后就是下載圖片啦
with open(f"壁紙圖片/{name}.jpg",mode="wb") as f: #接下來就是下載了 f.write(resp2.content)
來看看最后的效果吧
3.最后上全部的代碼啦
這就是簡簡單單的爬取圖片的代碼,完全沒有用到什么復(fù)雜的知識,簡簡單單,你值得擁有哈哈
import time import pinyin import requests from lxml import etree #這是導(dǎo)入xpath模塊 type=input("請輸入圖片的類型:") type=pinyin.get(f"{type}",format="strip") #這是將輸入的中文轉(zhuǎn)成拼音,format是為了去掉拼音的聲標 m=input("請輸入圖片的頁碼:") #圖片類型所在網(wǎng)頁的頁碼 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 #將小圖片的部分鏈接和主鏈接拼接起來 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 #將大圖片鏈接拼接起來 resp2=requests.get(child_tu_link_over,headers=header) #獲取大圖片 name=tu_names[n] with open(f"壁紙圖片/{name}.jpg",mode="wb") as f: #接下來就是下載了 f.write(resp2.content) print(f"{name} 下載完畢!!") n+=1 #每下載一張圖片n就加1 time.sleep(1.5) resp1.close() print("全部下載完畢??!") #over!over! resp.close() #最后記得要把所有請求的響應(yīng)關(guān)閉
注意:本文章只用于技術(shù)交流,請勿用于商用,如有違反,吾概不負責!??!
總結(jié)
到此這篇關(guān)于用python爬取電腦壁紙實例代碼的文章就介紹到這了,更多相關(guān)python爬取電腦壁紙內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解java調(diào)用python的幾種用法(看這篇就夠了)
這篇文章主要介紹了詳解java調(diào)用python的幾種用法(看這篇就夠了),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python內(nèi)置函數(shù)之eval函數(shù)詳解
這篇文章主要為大家介紹了python內(nèi)置函數(shù)之eval函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01Python異常處理與反射相關(guān)問題總結(jié)
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python異常處理與反射展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06Python內(nèi)存管理器如何實現(xiàn)池化技術(shù)
Python中的內(nèi)存管理是從三個方面來進行的,一對象的引用計數(shù)機制,二垃圾回收機制,三內(nèi)存池機制,下面這篇文章主要給大家介紹了關(guān)于Python內(nèi)存管理器如何實現(xiàn)池化技術(shù)的相關(guān)資料,需要的朋友可以參考下2022-05-05Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問題
這篇文章主要介紹了Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07