Python爬虫实战:王者荣耀韩信和李白皮肤图片抓取
Python爬虫实战:王者荣耀韩信和李白皮肤图片抓取
本教程将手把手教你使用Python编写一个爬虫程序,自动抓取王者荣耀韩信和李白皮肤图片,并将其存储到数据库和Excel表格中。同时,我们还将利用词云技术展示英雄名称的频率分布。
主要任务:
设计一个窗体应用系统,具有以下功能:
- 加载需要用到的各种第三方库,如requests;BeautifulSoup4;lxml;sqlite3;jieba;;WordCloud;openpyxl等。
- 爬取一个网站信息
- 将信息保存到sqlite数据库表中或者Excel表中,
- 生成图表或显示处理后的信息内容:
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')
代码解析:
- 导入必要的库: 包括requests用于发送网络请求,BeautifulSoup4用于解析HTML,sqlite3用于操作数据库,openpyxl用于操作Excel表格,jieba用于中文分词,WordCloud用于生成词云,matplotlib.pyplot用于显示图片。
- 定义网站地址: 将目标网站地址存储在变量url中。
- 发送网络请求: 使用requests.get()方法发送网络请求,获取网站数据。
- 解析网站数据: 使用BeautifulSoup4库解析HTML代码,提取需要的信息。
- 获取英雄列表: 使用soup.select()方法获取包含英雄信息的HTML标签。
- 创建数据库连接: 使用sqlite3库创建数据库连接。
- 创建数据库表: 使用conn.execute()方法创建名为hero的数据库表。
- 创建Excel文件: 使用openpyxl库创建一个Excel文件。
- 创建Excel表格: 使用wb.active方法获取默认的表格。
- 写入表头: 将ID,Name,Image URL作为表头写入Excel表格。
- 遍历英雄列表: 使用for循环遍历英雄列表,提取每个英雄的名称和图片链接。
- 插入数据库: 使用conn.execute()方法将英雄信息插入数据库表。
- 插入Excel表格: 使用ws.cell()方法将英雄信息插入Excel表格。
- 提交数据库事务: 使用conn.commit()方法提交数据库事务。
- 关闭数据库连接: 使用conn.close()方法关闭数据库连接。
- 生成词云: 使用jieba库进行中文分词,并使用WordCloud库生成词云。
- 显示词云: 使用matplotlib.pyplot库显示生成的词云。
- 保存Excel文件: 使用wb.save()方法保存Excel文件。
运行结果:
运行程序后,程序将自动抓取王者荣耀所有英雄的名称和图片链接,并将信息存储到herolist.db数据库和herolist.xlsx Excel表格中。同时,程序还会生成一个包含所有英雄名称的词云。
注意:
- 程序中使用到的font_path='msyh.ttc'表示使用微软雅黑字体生成词云。如果你的系统中没有安装该字体,程序可能会报错。
- 本教程仅供学习参考,请勿用于任何非法目的。
总结:
通过本教程,你已经学会了使用Python编写一个爬虫程序,自动抓取王者荣耀所有英雄的名称和图片链接,并将其存储到数据库和Excel表格中。同时,你也可以利用词云技术展示英雄名称的频率分布。希望本教程能帮助你学习Python爬虫技术。
原文地址: https://www.cveoy.top/t/topic/oQlI 著作权归作者所有。请勿转载和采集!