原神2.0宅男福利!Python爬蟲(chóng)實(shí)戰(zhàn),抓取原神真人cos圖片并保存,誰(shuí)的老婆趕緊抱走

前言

激動(dòng)的心,顫抖的手,老婆你們誰(shuí)沒(méi)有?

7月21號(hào)《原神》2.0發(fā)布,大家更新了嗎?

如果有正在跟我一樣的自學(xué)的朋友,需要我本篇的代碼或者其他的Python學(xué)習(xí)資料可以加Python新手學(xué)習(xí)交流群:594356095添加助理直接獲取

更新內(nèi)容一覽:

1、稻妻城:稻妻城和六大島嶼相連,目前新的島嶼只是其中三個(gè);

2、家園系統(tǒng)更新:會(huì)新增植物,種植系統(tǒng);

3、新圣遺物:稻妻會(huì)上三種新圣遺物;

4、主要登場(chǎng)人物:八重神子、珊瑚宮星海,早柚、神里綾華、托馬、巴爾、宵宮、五郎。

 

激動(dòng)的我,在逛米游社的時(shí)候,看著這些cos美女已經(jīng)按捺不住了,連夜的給大家爬了cos同人圖,保存了!有福同享,下面我們一起來(lái)看看這些美女,不對(duì)是代碼操作,正好給大家一個(gè)練手的小項(xiàng)目!

原神2.0宅男福利!Python爬蟲(chóng)實(shí)戰(zhàn),抓取原神真人cos圖片并保存,誰(shuí)的老婆趕緊抱走的圖1 

圖片1.png

 

首先,我們來(lái)看看效果圖:

圖片2.png

 

開(kāi)發(fā)環(huán)境:Python3.6

模塊(庫(kù)): requests/json/os/threading

爬取目標(biāo):https://bbs.mihoyo.com/ys/home/49 (米游社.原神)

目的:爬取COS專(zhuān)區(qū)下的圖片,并保存

圖片3.png

原神2.0宅男福利!Python爬蟲(chóng)實(shí)戰(zhàn),抓取原神真人cos圖片并保存,誰(shuí)的老婆趕緊抱走的圖5 

在COS專(zhuān)區(qū)下的圖片排序以最新回復(fù)欄目排序,因此所爬取的圖片會(huì)隨著最新的時(shí)間而更改。程序運(yùn)行時(shí)自動(dòng)爬取最新20條最新圖片。

原神2.0宅男福利!Python爬蟲(chóng)實(shí)戰(zhàn),抓取原神真人cos圖片并保存,誰(shuí)的老婆趕緊抱走的圖6 

圖片4.png


1、導(dǎo)入庫(kù)

import requests
import json
import os
import threading

 

2、初始化URL地址、設(shè)置UA代理(注意:這里的url并不是首頁(yè),而是一個(gè)二級(jí)頁(yè)面)

class WebSpider(object):
def __init__(self):
 
   self.url = 'https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=49'
   self.headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                          ' Chrome/92.0.4515.107 Safari/537.36'
       }

 

3、分析數(shù)據(jù)并儲(chǔ)存為字典返回

 def parse(self):
        img_dict_data = {}         
 res = requests.get(self.url, headers=self.headers).content.decode('utf-8')  
        res = json.loads(res)          
res = res['data']['list']  
        subject_name = [i['post']['subject'] for i in res]          
cover_url = [i['post']['cover'] for i in res]         
 # print(cover_url, subject_name)
        # 獲取對(duì)應(yīng)的標(biāo)題以及圖片地址
        for name, url in zip(subject_name, cover_url):
            # print(name, url)
            img_dict_data[name] = url  
        return img_dict_data

 

4、 保存圖片

def save_img(self, data):
        for k, v in data.items():
            img_type = v.split('/')[-1].split('.')[-1]            
 save_path = os.path.dirname(os.path.join(__file__)) + '/img'  # 當(dāng)前目錄下的圖片保存路徑
            if not os.path.exists(save_path):  
                os.mkdir('img')
            with open(f'img/{k}.{img_type}', 'wb') as f:
                img = requests.get(v, headers=self.headers).content                  f.write(img)  
            print(f'{k}.{img_type} ---圖保存成功!')

 

源代碼:


"""
爬取地址:https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=49
getForumPostList:api返回當(dāng)前最新回復(fù)的列表json數(shù)據(jù)
forum_id=49:COS欄目ID數(shù)據(jù)為 49
"""
import requests
import json
import os
import threading
 
class WebSpider(object):
    def __init__(self):
          self.url = 'https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=49'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                          ' Chrome/92.0.4515.107 Safari/537.36'
        }
 
    def parse(self):
        img_dict_data = {}         
res = requests.get(self.url, headers=self.headers).content.decode('utf-8')          
res = json.loads(res)         
res = res['data']['list']        
subject_name = [i['post']['subject'] for i in res]         
 cover_url = [i['post']['cover'] for i in res]  # 遍歷圖片的URL地址
        # print(cover_url, subject_name)
        # 獲取對(duì)應(yīng)的標(biāo)題以及圖片地址
        for name, url in zip(subject_name, cover_url):
            # print(name, url)
            img_dict_data[name] = url  # 字典增加數(shù)據(jù)
 
        return img_dict_data  # 返回?cái)?shù)據(jù)
 
    # 保存圖片
    def save_img(self, data):
        for k, v in data.items():
            img_type = v.split('/')[-1].split('.')[-1]  # 獲取圖片類(lèi)型
            save_path = os.path.dirname(os.path.join(__file__)) + '/img'  # 當(dāng)前目錄下的圖片保存路徑
            if not os.path.exists(save_path):  # img文件夾不存在時(shí)則創(chuàng)建新文件夾
                os.mkdir('img')
            with open(f'img/{k}.{img_type}', 'wb') as f:
                img = requests.get(v, headers=self.headers).content  # 發(fā)送請(qǐng)求獲取圖片內(nèi)容
                f.write(img)  # 寫(xiě)入數(shù)據(jù)
            print(f'{k}.{img_type} ---圖保存成功!')
 
    def main(self):
        data = self.parse()
        self.save_img(data)

原神2.0宅男福利!Python爬蟲(chóng)實(shí)戰(zhàn),抓取原神真人cos圖片并保存,誰(shuí)的老婆趕緊抱走的圖8 

僅供學(xué)習(xí),爬蟲(chóng)使用需謹(jǐn)慎!

希望可以得到各位的一鍵三連,感謝各位支持!

祝大家學(xué)習(xí)python順利!

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

4
1