王者荣耀皮肤图片爬取及数据分析实战:Python实现完整任务
一、任务需求
本次任务的主要目的是爬取新版王者荣耀皮肤的图片,并将信息保存至数据库或Excel表中,最后生成图表或显示处理后的信息。
实现的功能包括:
-
加载需要用到的各种第三方库,如requests、BeautifulSoup4、lxml、sqlite3、jieba、WordCloud、openpyxl等
-
爬取一个网站信息
-
将信息保存到sqlite数据库表中或者Excel表中
-
生成图表或显示处理后的信息
二、实现过程
- 加载需要用到的第三方库
首先要导入所需的第三方库,如requests、BeautifulSoup4、lxml、sqlite3、jieba、WordCloud、openpyxl等。
- 网站信息爬取
本次任务的主要目的是爬取新版王者荣耀皮肤的图片,因此需要先确定要爬取的网站。
通过观察网站的源代码,发现所需的图片地址都是在标签中的src属性中,因此可以使用BeautifulSoup库来解析网页源代码,获取
标签中的src属性,然后使用requests库来下载图片。
具体实现代码如下:
import requests
from bs4 import BeautifulSoup
import os
# 爬取皮肤图片
def get_skin_img(url):
# 发送请求
response = requests.get(url)
# 解析网页源代码
soup = BeautifulSoup(response.content, 'lxml')
# 获取皮肤图片所在的<div>标签
div = soup.find('div', class_='pic-pf')
# 获取所有皮肤图片的<img>标签
img_tags = div.find_all('img')
# 遍历所有的<img>标签
for img_tag in img_tags:
# 获取图片地址
img_url = img_tag['src']
# 下载图片
response = requests.get(img_url)
# 获取图片名称
img_name = img_url.split('/')[-1]
# 保存图片
with open(os.path.join('images', img_name), 'wb') as f:
f.write(response.content)
- 信息保存至数据库或Excel表中
本次任务可以将爬取的信息保存至sqlite数据库表中或者Excel表中。这里选择将信息保存至sqlite数据库表中,具体实现代码如下:
import sqlite3
# 创建数据库连接
conn = sqlite3.connect('skin.db')
# 创建数据库游标
cursor = conn.cursor()
# 创建皮肤表
cursor.execute('''
CREATE TABLE IF NOT EXISTS skin (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
type TEXT,
position TEXT
)
''')
# 插入皮肤信息
def insert_skin_info(name, type, position):
cursor.execute('INSERT INTO skin (name, type, position) VALUES (?, ?, ?)', (name, type, position))
conn.commit()
- 生成图表或显示处理后的信息
本次任务的最后一个功能是生成图表或显示处理后的信息。这里选择使用WordCloud库来生成词云图,具体实现代码如下:
import jieba
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
from PIL import Image
# 生成词云图
def generate_wordcloud():
# 获取皮肤名称
cursor.execute('SELECT name FROM skin')
names = cursor.fetchall()
# 对皮肤名称进行分词处理
words_list = []
for name in names:
words_list.extend(jieba.cut(name[0]))
words = ' '.join(words_list)
# 生成词云图
wc = WordCloud(
font_path='msyh.ttf',
background_color='white',
max_words=200,
stopwords=STOPWORDS.add('英雄'),
collocations=False,
width=1600,
height=800,
margin=2
).generate(words)
# 保存词云图
wc.to_file('wordcloud.png')
# 显示词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
三、总结报告
本次任务主要是爬取新版王者荣耀皮肤的图片,并将信息保存至数据库或Excel表中,最后生成图表或显示处理后的信息。
在实现过程中,主要使用了requests、BeautifulSoup4、lxml、sqlite3、jieba、WordCloud、openpyxl等第三方库,通过解析网页源代码获取图片地址并下载图片,将爬取的信息保存至sqlite数据库表中,使用WordCloud库生成词云图。同时,为了更好的展示词云图,还使用了matplotlib和PIL库。
通过完成本次任务,我学会了如何使用Python实现网站信息爬取、数据库操作、图表生成等基本操作,并深入了解了Python中的第三方库和模块,同时也提高了自己的Python编程能力。
原文地址: https://www.cveoy.top/t/topic/oJ8i 著作权归作者所有。请勿转载和采集!