Python爬虫实战:王者荣耀韩信和李白皮肤图片抓取

本教程将手把手教你使用Python编写一个爬虫程序,自动抓取王者荣耀韩信和李白皮肤图片,并将其存储到数据库和Excel表格中。同时,我们还将利用词云技术展示英雄名称的频率分布。

主要任务:

设计一个窗体应用系统,具有以下功能:

  1. 加载需要用到的各种第三方库,如requests;BeautifulSoup4;lxml;sqlite3;jieba;;WordCloud;openpyxl等。
  2. 爬取一个网站信息
  3. 将信息保存到sqlite数据库表中或者Excel表中,
  4. 生成图表或显示处理后的信息内容:
import requests
from bs4 import BeautifulSoup
import sqlite3
import openpyxl
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 网站地址
url = 'https://pvp.qq.com/web201605/herolist.shtml'

# 请求网站数据
res = requests.get(url)

# 解析网站数据
soup = BeautifulSoup(res.text, 'lxml')

# 获取英雄列表
herolist = soup.select('.herolist > li')

# 创建数据库连接
conn = sqlite3.connect('herolist.db')

# 创建数据库表
conn.execute('CREATE TABLE IF NOT EXISTS hero (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, image_url TEXT)')

# 创建Excel文件
wb = openpyxl.Workbook()

# 创建Excel表格
ws = wb.active
ws.title = 'hero'

# 写入表头
ws['A1'] = 'ID'
ws['B1'] = 'Name'
ws['C1'] = 'Image URL'

# 遍历英雄列表
for i, hero in enumerate(herolist):
    # 获取英雄名称
    name = hero.find('a').get('title')
    # 获取英雄图片链接
    image_url = hero.find('img').get('src')
    # 插入数据库
    conn.execute('INSERT INTO hero (name, image_url) VALUES (?, ?)', (name, image_url))
    # 插入Excel表格
    ws.cell(row=i+2, column=1, value=i+1)
    ws.cell(row=i+2, column=2, value=name)
    ws.cell(row=i+2, column=3, value=image_url)

# 提交数据库事务
conn.commit()

# 关闭数据库连接
conn.close()

# 生成词云
text = ' '.join([hero.find('a').get('title') for hero in herolist])
words = jieba.cut(text)
wordcloud = WordCloud(font_path='msyh.ttc').generate(' '.join(words))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

# 打开Excel文件
wb.save('herolist.xlsx')

代码解析:

  1. 导入必要的库: 包括requests用于发送网络请求,BeautifulSoup4用于解析HTML,sqlite3用于操作数据库,openpyxl用于操作Excel表格,jieba用于中文分词,WordCloud用于生成词云,matplotlib.pyplot用于显示图片。
  2. 定义网站地址: 将目标网站地址存储在变量url中。
  3. 发送网络请求: 使用requests.get()方法发送网络请求,获取网站数据。
  4. 解析网站数据: 使用BeautifulSoup4库解析HTML代码,提取需要的信息。
  5. 获取英雄列表: 使用soup.select()方法获取包含英雄信息的HTML标签。
  6. 创建数据库连接: 使用sqlite3库创建数据库连接。
  7. 创建数据库表: 使用conn.execute()方法创建名为hero的数据库表。
  8. 创建Excel文件: 使用openpyxl库创建一个Excel文件。
  9. 创建Excel表格: 使用wb.active方法获取默认的表格。
  10. 写入表头: 将ID,Name,Image URL作为表头写入Excel表格。
  11. 遍历英雄列表: 使用for循环遍历英雄列表,提取每个英雄的名称和图片链接。
  12. 插入数据库: 使用conn.execute()方法将英雄信息插入数据库表。
  13. 插入Excel表格: 使用ws.cell()方法将英雄信息插入Excel表格。
  14. 提交数据库事务: 使用conn.commit()方法提交数据库事务。
  15. 关闭数据库连接: 使用conn.close()方法关闭数据库连接。
  16. 生成词云: 使用jieba库进行中文分词,并使用WordCloud库生成词云。
  17. 显示词云: 使用matplotlib.pyplot库显示生成的词云。
  18. 保存Excel文件: 使用wb.save()方法保存Excel文件。

运行结果:

运行程序后,程序将自动抓取王者荣耀所有英雄的名称和图片链接,并将信息存储到herolist.db数据库和herolist.xlsx Excel表格中。同时,程序还会生成一个包含所有英雄名称的词云。

注意:

  • 程序中使用到的font_path='msyh.ttc'表示使用微软雅黑字体生成词云。如果你的系统中没有安装该字体,程序可能会报错。
  • 本教程仅供学习参考,请勿用于任何非法目的。

总结:

通过本教程,你已经学会了使用Python编写一个爬虫程序,自动抓取王者荣耀所有英雄的名称和图片链接,并将其存储到数据库和Excel表格中。同时,你也可以利用词云技术展示英雄名称的频率分布。希望本教程能帮助你学习Python爬虫技术。


原文地址: https://www.cveoy.top/t/topic/oQlI 著作权归作者所有。请勿转载和采集!

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