您好,登錄后才能下訂單哦!
本文將為大家詳細介紹“Python怎樣實現一鍵提取陰陽師原畫”,內容步驟清晰詳細,細節處理妥當,而小編每天都會更新不同的知識點,希望這篇“Python怎樣實現一鍵提取陰陽師原畫”能夠給你意想不到的收獲,請大家跟著小編的思路慢慢深入,具體內容如下,一起去收獲新知識吧。
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
xpath–簡單的爬蟲實例–提取陰陽師原畫壁紙
文章目錄
1、分析網頁
2、完整代碼實現
一、前言
二、需要用到的庫
三、實現過程
四、合成視頻
一、前言
很多人都玩過陰陽師吧,別的不談,陰陽師的原畫制作的那是相當地精細,閑暇之余,用幾行簡單的代碼爬取下來,豈不美哉?
二、需要用到的庫
import requestsfrom lxml import etreefrom fake_useragent import UserAgentimport os
沒用安裝庫的小伙伴,可以看一下我之前寫的這篇文章,里面有很多國內源的鏈接,方便你的下載。
傳送門
三、實現過程
首先打開官網,官網傳送門,點擊“視聽中心”里面的“原畫壁紙”
進入到原畫壁紙頁面后,選擇一個壁紙,進行檢查。
我發現,對于不同的分辨率,有不同的鏈接對應,而我檢查的這張圖有六個分辨率,是不是所有的圖片都是這樣呢?
后來我發現,并不是!
如上所示,有個圖甚至只有四個分辨率,并且,每張圖的分辨率的位置對應還不一致,那該怎么提取原畫鏈接呢?
A:利用xpath,根據文本內容提取節點
a = lists[i].xpath('./p/p/a[contains(text(), "1920x1080")]')[0]
這樣就能提取到分辨率為“1920x1080”的a節點了。
Q:lists[i]
是什么?
A:看了完整代碼就知道了。
import requestsfrom lxml import etreefrom fake_useragent import UserAgentimport os path = 'D:/陰陽師'if not os.path.exists(path): os.mkdir(path)# 隨機產生請求頭ua = UserAgent(verify_ssl=False, path='fake_useragent.json')url = 'https://yys.163.com/media/picture.html' # 原畫壁紙的頁面鏈接response = requests.get(url=url).text html = etree.HTML(response)lists = html.xpath('/html/body/p[2]/p[3]/p[1]/p[3]/p[2]/p')num = 1for i in range(len(lists)): a = lists[i].xpath('./p/p/a[contains(text(), "1920x1080")]')[0] # 根據文本內容鎖定節點a image_url = a.xpath('./@href')[0] # 獲取原畫壁紙鏈接 image_data = requests.get(url=image_url).content image_name = '{}.jpg'.format(num) # 給每張圖片命名 save_path = path + '/' + image_name # 圖片的保存地址 with open(save_path, 'wb') as f: f.write(image_data) print(image_name, '=======================>下載成功!!!') f.close() num += 1
運行結果如下:
四、合成視頻
通過合成視頻,可以慢慢欣賞爬取下來的原畫,舒服極了。
代碼如下:
import cv2import os# 輸出視頻的保存路徑video_dir = 'D:/yinyangshi/result.mp4'# 幀率fps = 0.2# 圖片尺寸img_size = (1920, 1080)fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # opencv3.0 mp4會有警告但可以播放videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)img_files = os.listdir('D:/yinyangshi/')for i in range(1, 397): img_path = 'D:/yinyangshi/tupian/' + '{}.jpg'.format(i) frame = cv2.imread(img_path) frame = cv2.resize(frame, img_size) # 生成視頻 圖片尺寸和設定尺寸相同 videoWriter.write(frame) # 寫進視頻里 print(f'======== 按照視頻順序第{i}張圖片合進視頻 ========')videoWriter.release() # 釋放資源
注意:合成視頻時,圖片的保存路徑和視頻的生成路徑不能包含中文!!!
如果你能讀到這里,小編希望你對“Python怎樣實現一鍵提取陰陽師原畫”這一關鍵問題有了從實踐層面最深刻的體會,具體使用情況還需要大家自己動手實踐使用過才能領會,如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。