python | P站桌布爬取
阿新 • • 發佈:2021-10-15
你懂的?壞笑(*^▽^*)
今天我們要爬取的是動漫桌布圖片,來看今天的主角:
在瀏覽的時候,當滑到底部時,桌布會重新整理載入,所以我們可以知道,桌布是動態載入的。
開啟開發者模式,觀察HTML的動態變化。
點選NetWork,XHR,我們就可以發現,
圖片地址是通過JSON資料傳輸過來的,所以,我們不就知道了每張桌布對應的url了嗎O(∩_∩)O
找到對應資料介面,開始程式碼的幹活!
通過輸入指定頁數,遍歷迴圈:
import requests import jsonpath import json import os page = input("請輸入需要下載的頁數:") if not os.path.exists('img'): os.mkdir('img') for i in range(int(page)): num = 1 url = f'https://rt.huashi6.com/front/index/load_pc_data?_ts_=1634131862878&cursor=' + str(i) + '-1634130800452' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0' } path = f'img\\第{i+1}頁' if not os.path.exists(path): os.mkdir(path) else: print(path + '已存在') continue html = requests.get(url, headers=headers).content.decode("utf-8") data = json.loads(html) img = jsonpath.jsonpath(data, '$..path') print(f"開始下載第{i+1}頁...") for j in img: with open(path+ '\\' + str(num) + os.path.splitext(j)[1], 'wb') as f: print(f"第{i+1}頁 正在下載第{num}張...") f.write(requests.get('https://img2.huashi6.com/' + j, headers=headers).content) num += 1
三十行程式碼不到,就可以搞定啦
程式碼執行:
結果:
額,突然發現,第一頁和第二頁是一樣的, ̄□ ̄||
不慌,我們可以選擇過濾掉第一頁
把程式碼for i in range(int(page))
改成for i in range(1,int(page)+1)
再把後面三個地方的 i+1
改成 i
即可(〃'▽'〃)
注:如果有對Json和JsonPath模組不懂的,可以點選下面連結檢視:
Python | JSON 資料解析(Json & JsonPath)
Collection:因為這些東西是非常簡單的。不要抱怨自己學不會,那是因為你沒有足夠用心。