当前位置: 首页 > news >正文

狮子座大数据分析(python爬虫版)

十二星座爱情性格 - 星座屋

首先找到一个星座网站,作为基础内容,来获取信息

网页爬取与信息提取

我们首先利用爬虫技术(如 Python 中的 requests 与 BeautifulSoup 库)获取页面内容。该页面(xzw.com/astro/leo/)中,除了狮子座基本属性外,还有两个重点部分:

  • 狮子座女生:摘要中提到“特点:心地善良、爱心丰富”,“弱点:喜欢引人注目”,“爱情:不太懂得疼爱对方”。
  • 狮子座男生:摘要中提到“特点:热情、组织能力、正义感”,“弱点:高傲、虚荣心”,“爱情:追求轰轰烈烈的爱情”。

通过解析这些文字,我们可以归纳:

  • 狮子座男生:性格热情、具备较强的组织能力和正义感,但有时表现出高傲和虚荣,热衷于追求激情四溢的爱情。
  • 狮子座女生:性格温暖、心地善良且富有爱心,但喜欢吸引他人注意,在爱情中可能表现得不够细腻体贴。
import requests
from bs4 import BeautifulSoup
import timebase_url = "https://www.xzw.com/astro/leo/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
}collected_texts = []
visited_urls = set()def scrape_page(url):global collected_textsif url in visited_urls:returntry:response = requests.get(url, headers=headers, timeout=10)response.encoding = 'utf-8'soup = BeautifulSoup(response.text, 'html.parser')page_text = soup.get_text(separator="\n", strip=True)collected_texts.append(page_text)visited_urls.add(url)  # 标记该 URL 已访问print(f"已爬取: {url} (当前累计 {len(collected_texts)} 条文本)")for link in soup.find_all('a', href=True):full_link = link['href']if full_link.startswith("/"):full_link = "https://www.xzw.com" + full_linkif full_link.startswith(base_url) and full_link not in visited_urls:if len(collected_texts) >= 1000:returntime.sleep(1)scrape_page(full_link)except Exception as e:print(f"爬取 {url} 失败: {e}")scrape_page(base_url)with open("test.txt", "w", encoding="utf-8") as file:file.write("\n\n".join(collected_texts))print("🎉 爬取完成,数据已保存到 test.txt 文件!")

将爬取到的数据存入test.txt中后,进行分析
 

import jieba
import re
from collections import Counterdef read_file(file_path):with open(file_path, 'r', encoding='utf-8') as f:text = f.read()return textdef clean_text(text):text = re.sub(r'\s+', '', text)text = re.sub(r'[^\u4e00-\u9fa5]', '', text)return textdef tokenize(text):words = jieba.lcut(text)return wordsdef count_words(words):return Counter(words)POSITIVE_WORDS = {"自信", "阳光", "大方", "慷慨", "勇敢", "领导", "果断", "豪爽", "热情", "友善","善良"}
NEGATIVE_WORDS = {"自负", "霸道", "固执", "急躁", "冲动", "强势", "高傲", "爱面子", "争强好胜", "以自我为中心"}def analyze_personality(word_counts):total_words = sum(word_counts.values())pos_count = sum(word_counts[word] for word in POSITIVE_WORDS if word in word_counts)neg_count = sum(word_counts[word] for word in NEGATIVE_WORDS if word in word_counts)pos_percent = (pos_count / total_words) * 100 if total_words > 0 else 0neg_percent = (neg_count / total_words) * 100 if total_words > 0 else 0neutral_percent = 100 - pos_percent - neg_percentreturn pos_percent, neg_percent, neutral_percentdef evaluate_personality(pos_percent, neg_percent):if pos_percent > neg_percent:conclusion = "狮子座整体评价较好,正面特质占比更高。"elif neg_percent > pos_percent:conclusion = "狮子座评价存在较多负面特质,但也有正面评价。"else:conclusion = "狮子座评价较为中立,正负面评价相当。"return conclusiondef main():text = read_file("test.txt")text = clean_text(text)words = tokenize(text)word_counts = count_words(words)pos_percent, neg_percent, neutral_percent = analyze_personality(word_counts)conclusion = evaluate_personality(pos_percent, neg_percent)print("🔍 狮子座性格评价分析:")print(f"✅ 正面评价占比:{pos_percent:.2f}%")print(f"❌ 负面评价占比:{neg_percent:.2f}%")print(f"⚖ 中立评价占比:{neutral_percent:.2f}%")print(f"📢 结论:{conclusion}")if __name__ == "__main__":main()

进行评价:

import jieba
import jieba.posseg as pseg 
import re
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as pltdef read_file(file_path):with open(file_path, 'r', encoding='utf-8') as f:text = f.read()return textdef clean_text(text):text = re.sub(r'\s+', '', text)  # 去除空格和换行符text = re.sub(r'[^\u4e00-\u9fa5]', '', text)  # 只保留中文return textdef tokenize(text):words = pseg.lcut(text)  # 使用 jieba 进行分词并标注词性adjectives = [word for word, flag in words if flag == 'a']  # 只保留形容词return adjectivesdef count_words(words):return Counter(words)def generate_wordcloud(word_counts):wordcloud = WordCloud(font_path='msyh.ttc', width=800, height=600, background_color='white').generate_from_frequencies(word_counts)plt.figure(figsize=(10, 8))plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')plt.show()def top_words(word_counts, top_n=10):return dict(word_counts.most_common(top_n))def main():text = read_file("test.txt")text = clean_text(text)words = tokenize(text)word_counts = count_words(words)top_n_words = top_words(word_counts, top_n=10)generate_wordcloud(top_n_words)if __name__ == "__main__":main()

多种图:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import jieba
import jieba.posseg as pseg
import re
from collections import Counter
from wordcloud import WordCloud# 设置支持中文的字体(以黑体为例)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 防止负号显示为方块
plt.rcParams['axes.unicode_minus'] = Falsedef read_file(file_path):with open(file_path, 'r', encoding='utf-8') as f:text = f.read()return textdef clean_text(text):text = re.sub(r'\s+', '', text)text = re.sub(r'[^\u4e00-\u9fa5]', '', text)return textdef tokenize(text):# 使用 jieba 对文本进行分词和词性标注words = pseg.lcut(text)# 仅保留形容词相关词性(例如 'a' 表示形容词),过滤掉名词等其它词性adjectives = [word for word, flag in words if flag in ['a', 'ad', 'an', 'ag']]return adjectivesdef count_words(words):return Counter(words)def generate_wordcloud(word_counts):wordcloud = WordCloud(font_path='msyh.ttc', width=800, height=600, background_color='white').generate_from_frequencies(word_counts)plt.figure(figsize=(10, 8))plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')plt.title("狮子座相关评价词云", fontsize=20, fontweight='bold', family='Microsoft YaHei')plt.show()def plot_bar_chart(word_counts, top_n=10):top_words = dict(word_counts.most_common(top_n))plt.figure(figsize=(10, 6))plt.bar(top_words.keys(), top_words.values(), color='skyblue')plt.title("狮子座最常见形容词柱状图", fontsize=18, fontweight='bold', family='Microsoft YaHei')plt.xlabel("形容词", fontsize=14, family='Microsoft YaHei')plt.ylabel("频率", fontsize=14, family='Microsoft YaHei')plt.xticks(rotation=45)plt.show()def plot_horizontal_bar_chart(word_counts, top_n=10):top_words = dict(word_counts.most_common(top_n))plt.figure(figsize=(10, 6))plt.barh(list(top_words.keys()), list(top_words.values()), color='lightcoral')plt.title("狮子座最常见形容词条形图", fontsize=18, fontweight='bold', family='Microsoft YaHei')plt.xlabel("频率", fontsize=14, family='Microsoft YaHei')plt.ylabel("形容词", fontsize=14, family='Microsoft YaHei')plt.show()def plot_pie_chart(word_counts, top_n=5):top_words = dict(word_counts.most_common(top_n))plt.figure(figsize=(8, 8))plt.pie(top_words.values(), labels=top_words.keys(), autopct='%1.1f%%', startangle=140,colors=['skyblue', 'lightgreen', 'lightcoral', 'gold', 'lightpink'])plt.title("狮子座最常见形容词饼状图", fontsize=18, fontweight='bold', family='Microsoft YaHei')plt.show()def main():text = read_file("test.txt")text = clean_text(text)words = tokenize(text)word_counts = count_words(words)generate_wordcloud(word_counts)plot_bar_chart(word_counts)plot_horizontal_bar_chart(word_counts)plot_pie_chart(word_counts)if __name__ == "__main__":main()

 

 

相关文章:

狮子座大数据分析(python爬虫版)

十二星座爱情性格 - 星座屋 首先找到一个星座网站,作为基础内容,来获取信息 网页爬取与信息提取 我们首先利用爬虫技术(如 Python 中的 requests 与 BeautifulSoup 库)获取页面内容。该页面(xzw.com/astro/leo/&…...

QT系列教程(18) MVC结构之QItemSelectionModel模型介绍

视频教程 https://www.bilibili.com/video/BV1FP4y1z75U/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 QItemSelectionModel Qt的MVC结构支持多个View共享同一个model,包括该model的选中状态等。我们可以通过设置QItemSelectionModel,来更改View的选…...

git设置本地仓库和远程仓库

设置本地仓库和远程仓库是使用Git进行版本控制的基本操作。以下是详细步骤: 创建本地仓库 初始化本地仓库: 打开命令行工具(如Terminal或Git Bash)。导航到你希望创建Git仓库的项目文件夹。运行以下命令来初始化一个新的Git仓库&…...

openharmony中HDF驱动框架源码梳理-驱动加载流程

要想大概了解一个公司,我们可能只需要知道它的运行逻辑即可,例如我们只需要知道它有财务有研发有运营等,财务报销、研发负责产品等即可,但是如果想深入具体的了解的话我们就要了解都有什么部门(对象)、各部门都包含哪些职责(对象方…...

golang 高性能的 MySQL 数据导出

需求导出方式对比方案1:快照导出(耗时:1.5s)方案2: 偏移分页(耗时:4s)方案 3:普通分页(耗时:4min40s) 需求 导出 MySQL 数据 分析: 一次性 select 大量数据带来的问题 性能问题: 数据库负载:大量数据查询会增加数据库的CPU、内存和I/O负担&#xff…...

31-判断子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列&#x…...

leetcode日记(95)将有序数组转换为二叉搜索树

很简单,感觉自己越来越适应数据结构题目了…… /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : va…...

使用SSH密钥连接本地git 和 github

目录 配置本地SSH,添加到github首先查看本地是否有SSH密钥生成SSH密钥,和邮箱绑定将 SSH 密钥添加到 ssh-agent:显示本地公钥*把下面这一串生成的公钥存到github上* 验证SSH配置是否成功终端跳转到本地仓库把http协议改为SSH(如果…...

C语言基础之【内存管理】

C语言基础之【内存管理】 存储类型作用域普通局部变量静态局部变量普通全局变量静态全局变量全局函数和静态函数 内存布局内存分区存储类型与内存四区内存操作函数memset()memcpy()memmove()memcmp() 堆区内存分配和释放malloc()free() 内存分区代码分析返回栈区地址返回data区…...

C盘清理技巧分享:释放空间,提升电脑性能

目录 1. 引言 2. C盘空间不足的影响 3. C盘清理的必要性 4. C盘清理的具体技巧 4.1 删除临时文件 4.2 清理系统还原点 4.3 卸载不必要的程序 4.4 清理下载文件夹 4.5 移动大文件到其他盘 4.6 清理系统缓存 4.7 使用磁盘清理工具 4.8 清理Windows更新文件 4.9 禁用…...

每天一道算法题【蓝桥杯】【两两交换链表中的节点】

思路 本质问题可以分成若干个子问题 即把前两个链表交换,并与后面的链表相连 故实现函数功能调用自身递归即可 #define _CRT_SECURE_NO_WARNINGS 1 struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), nex…...

mIoU Class与mIoU Category的区别

mIoU(mean Intersection over Union)是语义分割任务中常用的评估指标,用于衡量模型预测的分割结果与真实标签之间的重叠程度。mIoU Class 和 mIoU Category 的区别主要体现在计算方式和应用场景上: 1. mIoU Class 定义&#xff…...

深入解析 C 语言中含数组和指针的构造体与共同体内存计算

在 C 语言中,构造体(struct)和共同体(union)允许我们将多种数据类型组合到一起。除了常见的基本数据类型之外,经常还会在它们中嵌入数组和指针。由于数组的内存是连续分配的,而指针的大小与平台…...

【C++模板】:开启泛型编程之门(函数模版,类模板)

📝前言: 在上一篇文章C内存管理中我们介绍了C的内存管理,重点介绍了与C语言的区别,以及new和delete。这篇文章我们将介绍C的利器——模板。 在C编程世界里,模板是一项强大的特性,它为泛型编程奠定了坚实基础…...

HEC-HMS水文建模全解析:气候变化与极端水文、离散化流域单元‌精准刻画地表径流、基流与河道演进过程‌

一、技术革新:数字流域的精密算法革命 在全球气候变化与极端水文事件频发的双重压力下,HEC-HMS模型凭借其‌半分布式建模架构‌与‌多尺度仿真能力‌,已成为现代流域管理的核心工具。该模型通过‌离散化流域单元‌精准刻画地表径流、基流与河…...

具备多种功能的PDF文件处理工具

软件介绍 在日常办公和学习场景中,PDF文件使用极为频繁,而一款功能强大的PDF编辑软件能大幅提升处理效率。 今天要介绍的Adobe Acrobat Pro DC 2024.005.20414,就具备像编辑Word文档一样便捷编辑PDF的能力。 PDF文档在学习和工作中广泛应用…...

【SpringMVC】SpringMVC的启动过程与原理分析:从源码到实战

SpringMVC的启动过程与原理分析:从源码到实战 SpringMVC是Spring框架中用于构建Web应用的核心模块,它基于MVC(Model-View-Controller)设计模式,提供了灵活且强大的Web开发能力。本文将深入分析SpringMVC的启动过程、核…...

转自南京日报:天洑软件创新AI+仿真技术变制造为“智造

以下文章来源:南京日报 进入3月,南京天洑软件有限公司(以下简称天洑软件)董事长张明更加忙碌。“公司强调工业软件在数字经济与先进制造业融合中的关键作用,并已广泛应用在能源、电力和航空等领域。”他说,…...

golang dlv调试工具

golang dlv调试工具 在goland2022.2版本 中调试go程序报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.7 (maximum supported version 1.19) 即使你go install了新的dlv也无济于事 分析得出Goland实际使用的是 Goland安装目录下dlv 例…...

LSTM方法实践——基于LSTM的汽车销量时序建模与预测分析

Hi,大家好,我是半亩花海。本实验基于汽车销量时序数据,使用LSTM网络(长短期记忆网络)构建时间序列预测模型。通过数据预处理、模型训练与评估等完整流程,验证LSTM在短期时序预测中的有效性。 目录 一、实验…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...