海南建設銀行官方網(wǎng)站縱橫seo
Python泰褲辣!520寫一個自動換壁紙軟件,將女友照騙放進去送給她!
- 準備工作
- 1、環(huán)境
- 2、使用的模塊
- 3、如何配置pycharm里面的python解釋器?
- 4、pycharm如何安裝插件?
- 代碼實戰(zhàn)
- 1、獲取壁紙
- 自動更換壁紙程序
- 最后
話說兄弟們,今天520你們都送給女朋友啥禮物了?
不會吧不會吧,不會有人還是單身狗吧!
算了,還是回到正題吧,再說我要挨打了~
作為程序員,平常的禮物都買了,當然還得做一個不一樣的有代表性的,體現(xiàn)一下自己的用心。
那么今天就給分享怎么用Python將女友照片做成自動換壁紙軟件,話不多說直接開始!
準備工作
1、環(huán)境
首先我們準備好環(huán)境和編輯器,我使用的是:
- Python 3.8 解釋器
- Pycharm 編輯器
2、使用的模塊
import re # 正則表達式模塊
import requests # 數(shù)據(jù)請求模塊
import os # 文件操作模塊
import ctypes # 時間模塊
request是第三方模塊,需要手動安裝一下,win + R
輸入cmd
輸入安裝命令pip install requests
其它的都是自帶的,不用安裝,直接調用。
3、如何配置pycharm里面的python解釋器?
- 選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
- 點擊齒輪, 選擇add
- 添加python安裝路徑
4、pycharm如何安裝插件?
- 選擇file(文件) >>> setting(設置) >>> Plugins(插件)
- 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
- 選擇相應的插件點擊 install(安裝) 即可
- 安裝成功之后 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
代碼實戰(zhàn)
為了單身的小伙伴,于是我將案例分為兩個部分,源碼我都放在文末名片了,自己拿一下哈。
- 獲取壁紙
- 設置自動更換
當然,不單身的話直接看第二部分,哈哈~
1、獲取壁紙
首先來實現(xiàn)單張壁紙獲取
這里分為四個步驟來獲取壁紙,后面的網(wǎng)址我都屏蔽一下,防止檢測。
- 發(fā)送請求, 對于 http://www.***.com/desk/31131.htm 發(fā)送請求
- 獲取數(shù)據(jù), 獲取網(wǎng)頁源代碼 <服務器返回響應數(shù)據(jù)>
- 解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內容 壁紙鏈接以及名字
- 保存數(shù)據(jù), 把壁紙文件保存到本地文件
發(fā)送請求
for page in range(3, 21):print(f'正在采集第{page}頁的數(shù)據(jù)內容')# 請求鏈接link = f'http://www.****.com/index_{page}.htm'# 發(fā)送請求html_data = requests.get(link).text# 提取IDimg_id_list = re.findall('<a href="/desk/(\d+)\.htm" title=', html_data)# for循環(huán)遍歷for img_id in img_id_list:# 請求鏈接url = f'http://www.***.com/desk/{img_id}.htm'# 發(fā)送請求response = requests.get(url)
獲取數(shù)據(jù)
response.text 獲取響應文本數(shù)據(jù)
response.encoding = response.apparent_encoding 自動識別碼
解析數(shù)據(jù)
# 獲得到數(shù)據(jù), 返回出現(xiàn)亂碼了
response.encoding = 'gbk'
# 鏈接地址 以及 標題
img, title = re.findall('<img src="(.*?)" alt="(.*?)"', response.text)[0]
print(img, title)
保存數(shù)據(jù)
# 發(fā)送請求, 獲取數(shù)據(jù)
img_content = requests.get(img).content
with open('img\\' + title + '.jpg', mode='wb') as f:f.write(img_content)
多頁多個數(shù)據(jù)采集
這里只講一下大概思路,我有專門錄制視頻來講解,可以在文末名片拿視頻。
一個鏈接, 對應一個數(shù)據(jù),獲取多個鏈接, 獲取多個數(shù)據(jù)。
http://www.***.com/desk/31095.htm
http://www.***.com/desk/31131.htm
http://www.***.com/desk/31090.htm
http://www.***.com/desk/31092.htm
第二頁: http://www.***.com/index_2.htm
第三頁: http://www.***.com/index_3.htm
第四頁: http://www.***.com/index_4.htm
自動更換壁紙程序
import os
import ctypes
import cv2def Change():# 壁紙文件夾路徑wallpaper_dir = r"D:\壁紙\output"# 獲取壁紙文件夾中的文件列表wallpapers = os.listdir(wallpaper_dir)# 隨機選擇一張壁紙# wallpaper_filename = random.choice(wallpapers)for wallpaper in wallpapers:# 拼接壁紙文件的完整路徑wallpaper_path = os.path.join(wallpaper_dir, wallpaper)# 設置壁紙ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_path, 3)def convert_mp4_to_jpgs(path):video_capture = cv2.VideoCapture(path)still_reading, image = video_capture.read()frame_count = 5 # 保存的起始幀的編號005while still_reading:cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image)# read next imagestill_reading, image = video_capture.read()frame_count += 5 # 保存幀依次增加5,005>>010>>015.......Change()
最后
為了大家能更好的讓女朋友感受到你的愛,我還準備了一份講女友照片做成照片墻的源碼,直接在下方名片領取就好了,來看看效果。
好了,520的分享就到這結束了,祝大家表白的表白成功,過節(jié)的節(jié)日快樂,沒女朋友的早點找一個!