原神20宅男福利!爬虫实战,爬取原神真人cos图片并保存,

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

原神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、导入库

1
2
3
4
5
6
7
arduino复制代码import requests

import json

import os

import threading

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ruby复制代码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、分析数据并储存为字典返回

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ini复制代码  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、 保存图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
scss复制代码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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
python复制代码"""
爬取地址: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图)


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

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%