前言
本文的文字及圖片來源于網(wǎng)絡(luò),僅供學(xué)習(xí)、交流使用,不具有任何商業(yè)用途,如有問題請(qǐng)及時(shí)聯(lián)系我們以作處理。
PS:如有需要Python學(xué)習(xí)資料的小伙伴可以加點(diǎn)擊下方鏈接自行獲取
python免費(fèi)學(xué)習(xí)資料以及群交流解答點(diǎn)擊即可加入
本文章分為兩個(gè)階段,第一個(gè)階段是下載電腦壁紙,因?yàn)樾【帥]有圖片壁紙,所以我寫了一個(gè)爬取彼岸壁紙的爬蟲;第二個(gè)階段是實(shí)現(xiàn)自動(dòng)更換電腦壁紙的操作,如果讀者有圖片壁紙,可以直接看第二個(gè)階段喔。
爬蟲獲取壁紙
這是一個(gè)爬蟲的過程,但是應(yīng)用了自動(dòng)化,也就是python中的selenium模塊,需要的python模塊有requests、selenium、os、time、bs4等。
目標(biāo)網(wǎng)址:http://pic.netbian.com/
我們?cè)谳斎肟蛑休斎胱约合胨阉鞯膬?nèi)容,點(diǎn)擊搜索,可以發(fā)現(xiàn),此時(shí)的網(wǎng)址格式是這樣的。
也就是輸入的關(guān)鍵字變成了搜索id了,那么怎樣得到這個(gè)網(wǎng)址呢?小編是這樣的,應(yīng)用到selenium模塊,實(shí)現(xiàn)搜索自動(dòng)化,來到這個(gè)網(wǎng)址的界面,然后,應(yīng)用selenium 模塊下面的current_url 方法就可以得到這個(gè)網(wǎng)址了。
這個(gè)網(wǎng)址下面就是我們搜索得到的圖片了。很顯然,這些圖片不可能只有一頁(ajax除外),發(fā)現(xiàn)這個(gè)網(wǎng)址下面有個(gè)總頁碼,如下面的總頁碼是191頁。
我們點(diǎn)擊其中的一個(gè)頁碼就如可以發(fā)現(xiàn),接下來的網(wǎng)址的這個(gè)為:http://pic.netbian.com/e/search/result/index.php?page=1&searchid=18 ,而且 page 后面的參數(shù)要比實(shí)際頁數(shù)少一,也就是我選擇第一頁的時(shí)候,實(shí)際 page=0 。我們點(diǎn)擊其中的圖片看一下(當(dāng)然是在打卡開發(fā)者模式的情況下的)
發(fā)現(xiàn)這個(gè)圖片的尺寸比較小,如果直接這樣把它下載下來,設(shè)置為壁紙的話,電腦桌面肯定會(huì)比較模糊。
經(jīng)過幾次嘗試,發(fā)現(xiàn)在另一個(gè)網(wǎng)址內(nèi)部,也有這個(gè)圖片的下載地址,圖片尺寸比較大,設(shè)置為電腦壁紙不會(huì)出現(xiàn)剛才那種現(xiàn)象。
之后,我們只需得到這個(gè)網(wǎng)址,并下載即可,部分代碼如下:
def Download():
id,path=get_info()
# http://pic.netbian.com/e/search/result/index.php?page={}&searchid={}
# 網(wǎng)址的格式
url2='http://pic.netbian.com/e/search/result/index.php?page={}&searchid={}'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}
# 請(qǐng)求頭
page2=int(input('請(qǐng)輸入下載頁數(shù)(注意不要超過總頁數(shù)):')) # 下載頁數(shù)
for page in range(page2):
url=url2.format(page,id)
content=requests.get(url=url,headers=headers)
L2=bs(content=content.text)
for j in range(len(L2)):
content=requests.get(url=L2[j],headers=headers).content
with open(file=path+'./{}-{}.jpg'.format(page+1,j),mode='wb') as f:
f.write(content)
print('-->已下載{}頁'.format(page+1))
time.sleep(2) # 每下載一頁,休眠2秒
自動(dòng)更換電腦壁紙
需要的python模塊有win32api、win32con、win32gui、os、time等。這個(gè)基本原理好像要應(yīng)用到電腦注冊(cè)表,我不是很懂,所以小編在這里就不清晰講解了,直接上代碼。
import win32api
import win32con
import win32gui
import os
import time
def Windows_img(paperPath):
k=win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control panel\\Desktop",0,win32con.KEY_SET_VALUE)
# 在注冊(cè)表中寫入屬性值
win32api.RegSetValueEx(k,"wapaperStyle",0,win32con.REG_SZ,"2") # 0 代表桌面居中 2 代表拉伸桌面
win32api.RegSetValueEx(k,"Tilewallpaper",0,win32con.REG_SZ,"0")
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,paperPath,win32con.SPIF_SENDWININICHANGE) # 刷新桌面
def changeWallpaper():
path=input('請(qǐng)輸入文件路徑:')
L2=os.listdir(path=path) # 得到文件路徑下的圖片,列表類型
i=0
print(L2)
while True:
Windows_img(path+'\{}'.format(L2[i]))
time.sleep(10) # 設(shè)置壁紙更換間隔,這里為10秒,根據(jù)用戶自身需要自己設(shè)置秒數(shù)
i += 1
if i==len(L2): # 如果是最后一張圖片,則重新到第一張
i=0
if __name__ == '__main__':
changeWallpaper()
代碼中的這個(gè)時(shí)間可以自己根據(jù)自身需求進(jìn)行設(shè)置。