原神2.0宅男福利!爬虫实战,爬取原神真人cos图片并保存,谁的老婆快抱走

2,675 阅读3分钟

激动的心,颤抖的手,老婆你们谁没有?

原神5.jpg

(图片来源于米游社)

7月21号《原神》2.0发布,大家更新了吗?

更新内容一览:

1、稻妻城:稻妻城和六大岛屿相连,目前新的岛屿只是其中三个;

2、家园系统更新:会新增植物,种植系统;

3、新圣遗物:稻妻会上三种新圣遗物;

4、主要登场人物:八重神子、珊瑚宫星海,早柚、神里绫华、托马、巴尔、宵宫、五郎。

激动的我,在逛米游社的时候,看着这些cos美女已经按捺不住了,连夜的给大家爬了cos同人图,保存了!有福同享,下面我们一起来看看这些美女,不对是代码操作,正好给大家一个练手的小项目!

首先,我们来看看效果图:

Sapmle_gif(1).gif

项目介绍

开发环境: Python3.6

模块(库): requests/ json /os/ threading

爬取目标: 爬取的是原神官方网站,米游社。bbs.mihoyo.com/ys/home/49 (米游社.原神)

目的: 爬取COS专区下的图片,并保存

原神.png

在COS专区下的图片排序以最新回复栏目排序,因此所爬取的图片会随着最新的时间而更改。程序运行时自动爬取最新20条最新图片。

原神4.jpg

1、导入库

import requests
 
import json
 
import os
 
import threading

2、初始化URL地址、设置UA代理(注意:这里的url并不是首页,而是一个二级页面)

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、分析数据并储存为字典返回

  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)
 
        # 获取对应的标题以及图片地址
 
        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'  # 当前目录下的图片保存路径
 
            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} ---图保存成功!'
            

米游社3.jpg

多的我就不说了,源代码附有详细说明:

"""
爬取地址:https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=49
getForumPostList:api返回当前最新回复的列表json数据 
forum_id=49:COS栏目ID数据为 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)
        # 获取对应的标题以及图片地址
        for name, url in zip(subject_name, cover_url):
            # print(name, url)
            img_dict_data[name] = url  # 字典增加数据
 
        return img_dict_data  # 返回数据
 
    # 保存图片
    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'  # 当前目录下的图片保存路径
            if not os.path.exists(save_path):  # img文件夹不存在时则创建新文件夹
                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} ---图保存成功!')
 
    def main(self):
        data = self.parse()
        self.save_img(data)

WPS图片拼图.png

(图片来源于米游社,左一神里同人图,右一博主仧郎的cos图)


有这技术 还要啥自行车?福利已经发布,大家可以留下你们的赞再走!!源码获取看简介!!关键词回复“原神”