一、任务需求

本次任务的主要目的是爬取新版王者荣耀皮肤的图片,并将信息保存至数据库或Excel表中,最后生成图表或显示处理后的信息。

实现的功能包括:

  1. 加载需要用到的各种第三方库,如requests、BeautifulSoup4、lxml、sqlite3、jieba、WordCloud、openpyxl等

  2. 爬取一个网站信息

  3. 将信息保存到sqlite数据库表中或者Excel表中

  4. 生成图表或显示处理后的信息

二、实现过程

  1. 加载需要用到的第三方库

首先要导入所需的第三方库,如requests、BeautifulSoup4、lxml、sqlite3、jieba、WordCloud、openpyxl等。

  1. 网站信息爬取

本次任务的主要目的是爬取新版王者荣耀皮肤的图片,因此需要先确定要爬取的网站。

通过观察网站的源代码,发现所需的图片地址都是在标签中的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)
  1. 信息保存至数据库或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()
  1. 生成图表或显示处理后的信息

本次任务的最后一个功能是生成图表或显示处理后的信息。这里选择使用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录