利用爬虫爬取游戏网站图片和信息并生成词云图

该项目使用Python爬虫技术爬取游戏网站的皮肤图片和信息,通过处理数据生成词云图。采用了pyecharts、MongoDB和Python第三方库。目标是检验Python学习成果,爬取的图片被保存,信息用于制作词云图,展示了数据的可视化分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目简介
1.1 本项目博客地址:
1.2 项目完成的功能与特色
功能:爬取目标游戏网站的皮肤图片及信息并用爬取的信息生成词云图。
特色:将爬取的信息做简单的处理,并将爬取的图片直接保存在文件夹中。
1.3项目采取的技术线

使用软件:Visual Studio Code、 PyCharm

采用技术:pyecharts、MongoDB、python第三方库

1.4项目借鉴的源代码github或博客地址

https://www.cnblogs.com/su-sir/p/12051564.html
https://www.jianshu.com/p/ca95c2a7233c
https://blog.youkuaiyun.com/luoz_java/article/details/92741358
1.5团队任务分配表

成员 任务
小锦 全部

二、项目的需求分析
2.1项目背景
为了检验自己学习Python一学期的成果。
2.2项目目标
希望通过
3.3项目需求
鉴于当代社会娱乐产业的发达,一个游戏里涵盖了许许多多的内容,也衍生出许许多多不同的产业链和用户需求。通过这个爬虫,将获取到的图片保存用来挑选好看的皮肤以及精美CG。
三、项目功能架构图、主要功能流程图
3.1项目功能架构图:
在这里插入图片描述
3.2主要功能流程图:

### 实现网页弹幕与评论爬虫及词云生成 为了实现这一目标,需完成几个主要步骤:获取所需的数据源URL模式、发送HTTP请求以获得数据、解析返回的内容提取有用的信息以及最后利用这些信息来构建词云图像。 #### 获取CID构造API URL 对于像B站这样的视频分享平台来说,每条视频都有唯一的标识符称为`cid`。可以通过访问特定页面通过浏览器开发者工具查看网络流量找到该参数[^3]。一旦获得了这个ID,则可以根据官方文档或其他资源得知用于加载实时聊天记录(即“弹幕”)的接口地址模板,据此拼接成完整的查询字符串。 ```python import requests def get_barrage_url(avid, cid): base_api = "https://api.bilibili.com/x/v1/dm/list.so?oid=" return f"{base_api}{cid}" ``` #### 发送请求接收响应 有了上述准备好的链接之后就可以调用库函数发起GET方法请求了;通常情况下服务器会返回XML格式的结果集给客户端应用进一步处理。这里推荐使用`requests`第三方模块简化操作流程: ```python response = requests.get(get_barrage_url('AV号', 'CID')) if response.status_code == 200: xml_data = response.content.decode() else: raise Exception(f"Failed to fetch data with status code {response.status_code}") ``` #### 解析XML结构化文本 由于从API端口得到的是未经加工过的原始字符流形式的数据包,因此还需要借助专门设计用来读取此类文件类型的类库来进行转换工作——比如BeautifulSoup就是一个不错的选择之一,在此之前记得先安装它(`pip install beautifulsoup4`)。 ```python from bs4 import BeautifulSoup def parse_xml(xml_string): soup = BeautifulSoup(xml_string, features='xml') messages = [] items = soup.find_all('d') # 找到所有的<d>标签代表单条消息实体对象 for item in items: message_text = item.text.strip() # 提取消息正文部分去除首尾空白符 timestamp = float(item['p'].split(',')[0]) # 时间戳位于属性列表中的第一个元素位置 messages.append({ 'text': message_text, 'timestamp': timestamp }) return messages ``` #### 数据预处理与清理 在实际应用场景下收集回来的文字往往掺杂着许多无关紧要甚至干扰后续统计分析过程的因素,所以有必要对其进行初步过滤规范化整理。例如移除HTML标记符号、特殊编码字符序列等杂质成分;另外还可以考虑根据业务逻辑需求设定一些自定义规则来筛选有效样本集合。 ```python import re def clean_message(message_dict): cleaned_msg = { **message_dict, 'cleaned_text': re.sub(r'\s+', '', message_dict['text']).lower(), # 去掉多余空格转小写 } unwanted_patterns = [ r'<.*?>', # HTML tags r'&\w+;', # Special characters like & r'[^\u4e00-\u9fff]+', # Non-Chinese characters (assuming Chinese text is desired) ] pattern = '|'.join(unwanted_patterns) regex = re.compile(pattern) cleaned_msg['final_text'] = regex.sub('', cleaned_msg['cleaned_text']) return cleaned_msg ``` #### 构建词频分布表 当拥有一批经过严格审查后的纯净语料后便能够着手计算各个词语出现次数从而形成频率直方图表征整体趋势特征。Jieba分词器可以帮助中文环境下更精准地切分句子单元进而提升准确性。 ```python import jieba def build_word_frequency(messages_list): word_freq = {} for msg in messages_list: words = list(jieba.cut(msg['final_text'])) for w in words: if len(w)>1 and not w.isdigit(): word_freq[w]=word_freq.get(w,0)+1 sorted_words=sorted(word_freq.items(),key=lambda kv:(kv[1],kv[0]),reverse=True)[:100] return dict(sorted_words) ``` #### 绘制可视化图形 最终一步就是选取合适的绘图引擎绘制出美观直观的效果展示出来供人们欣赏啦!Matplotlib配合WordCloud插件可以轻松达成目的。 ```python from wordcloud import WordCloud import matplotlib.pyplot as plt def plot_cloud(freq_dist): wc = WordCloud(font_path='/path/to/simhei.ttf', background_color="white", max_words=200).generate_from_frequencies(freq_dist) plt.figure(figsize=(15,8)) plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值