1. 数据采集实现:
对百度贴吧帖子数据的采集。首先,使用requests库发送HTTP请求,通过设置请求头模拟浏览器访问,获取网页的HTML内容。然后,利用BeautifulSoup库对HTML内容进行解析,以便提取所需的信息。
在循环中,我们指定了要爬取的页面数量(300页),根据每一页的URL进行循环请求。在每个页面上,我们使用正则表达式提取< a>标签的href和title属性值,其中href存储帖子的链接,title存储帖子的标题。
接下来,我们将提取到的链接和标题存储到一个CSV文件中,以便后续分析和处理。首先创建一个CSV文件,并写入列名(链接和标题)。然后,将每个帖子的链接和标题作为一行写入CSV文件。
最后,为了防止被网站反爬虫机制封锁IP,我们在每次请求之间加入随机的延时,以模拟人类的访问行为。数据采集结果如下图:
数据详情页采集:
我们能够自动化地从百度贴吧采集帖子的详细信息,包括帖子内容、发文时间、IP归属地和用户名等。这些信息可以用于进一步的文本分析、用户行为研究等。需要注意遵守相关的爬取规则和法律法规,尊重网站的隐私政策和用户权益。同时,为了防止被网站反爬虫机制封锁IP,我们在每次请求之间加入适当的延时,以模拟人类的访问行为。
首先,使用pandas库读取之前保存的帖子链接和标题数据文件百度贴吧帖子.csv,并转换为DataFrame格式,方便后续遍历。
然后,通过循环遍历DataFrame中的每一行数据,提取帖子的链接,并构建完整的帖子URL。接着,使用requests库发送HTTP请求,获取帖子页面的HTML内容。
在每个帖子页面上,我们使用BeautifulSoup库对HTML内容进行解析,以提取帖子的详细信息。具体包括帖子的内容、发文时间、IP归属地和用户名等。通过查找相应的HTML标签和属性,我们可以定位到这些信息,并提取出来。
最后,将帖子的详细信息添加到原始数据行中,并将每行数据写入到一个新的CSV文件百度贴吧帖子详情.csv中,以便后续分析和处理。在写入CSV文件时,我们使用csv库的writerow()方法将每行数据写入文件。数据采集结果如下图:
2、情感分析实现:
我们可以对文本数据进行情感分析,并了解数据中的情感倾向。这对于了解用户意见、产品评价、舆情分析等方面具有重要意义,为决策提供参考依据。同时,需要注意情感词典的准确性和适用性,以及文本预处理的影响,以获得更准确和可靠的情感分析结果。
首先,通过读取保存在Excel文件中的数据集,使用pandas库将数据加载到DataFrame中。
接下来,读取情感词典文件,将其中的词语根据情感分类进行分类整理。将词语按照七种情绪(喜悦、好、惊奇、愤怒、悲伤、恐惧、厌恶)进行归类。
然后,定义了一个函数来对每条文本进行情感计算。该函数会将文本进行中文分词,并统计其中出现的情感词汇的频率。根据情感词汇的分类,计算正向情绪和负向情绪的得分,并返回计算结果。
在主程序中,使用apply()方法调用情感计算函数,对每条文本进行情感计算,并将计算结果添加到DataFrame中。
最后,根据计算结果,将情感进行分类判断,即根据正向情绪和负向情绪的得分比较,判断情感是积极、消极还是中性,并将结果添加到DataFrame中。
代码执行完毕后,将计算结果保存到Excel文件中,并使用matplotlib和seaborn库对情感分析结果进行可视化展示。通过饼图展示不同情感类别的占比情况。情感分析结果如下图:
3、主题分析
我们可以对文本数据进行主题分析,发现隐藏在文本中的不同主题,并了解每个主题所代表的关键词和数量。主题分析可以应用于文本挖掘、舆情监测、用户兴趣分析等领域,为决策提供重要参考依据。需要注意合理设置停用词和调整模型参数,以获得更准确和有意义的主题分析结果。
首先,读取保存在CSV文件中的帖子详情数据集,并将多个数据集合并为一个DataFrame。
接下来,通过整合停用词库文件,构建停用词列表。停用词是指在文本分析中无需考虑的常见词语,如标点符号、介词等。然后,使用jieba库对评论文本进行分词,并根据停用词和特定规则对词语进行过滤,只保留有意义的词语。
在分词和过滤后,将清洗后的评论数据保存回DataFrame的新列中。接着,使用TfidfVectorizer类进行TF-IDF(Term Frequency-Inverse Document Frequency)转换,将评论文本转换为数值特征表示。
然后,通过KMeans算法寻找最优聚类数,即确定最佳的主题数量。利用轮廓系数(silhouette score)评估聚类结果的质量,并绘制聚类数与轮廓系数的折线图。
接下来,使用LatentDirichletAllocation类进行LDA(Latent Dirichlet Allocation)建模,将评论文本进行主题分析。设置主题数量,并训练LDA模型。使用pyLDAvis库进行可视化,生成主题-关键词矩阵,并将结果保存为HTML文件。
最后,遍历每个主题,获取主题的关键词和数量,并打印出来。这些关键词可以帮助我们理解每个主题的特点和内容。主题分析结果如下:
词云图
轮廓图
主题分析图