python数据采集课设-京东手机评论爬取与分析

这篇具有很好参考价值的文章主要介绍了python数据采集课设-京东手机评论爬取与分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据采集模块:

1.手机评论采集,数据信息(评论,评分,用户,评论发布时间)

爬取不同的手机评论,需要设置不同的id

爬取京东手机评论,python,大数据,数据分析

 如上图红圈处即为手机vivo S12的id

import requests
import csv
import re
import time
import json

comment_url = 'https://club.jd.com/comment/productPageComments.action'
csv_file = 'vivo S12 .csv'

f = open(csv_file, 'w', newline='', encoding='utf-8-sig')#文件名可以根据不同的手机更改
fieldnames = ['评论', '评分', '用户', '评论发布时间']
csvwriter = csv.DictWriter(f, fieldnames=fieldnames)
csvwriter.writeheader()

for i in range(100):
    print('正在获取第', i + 1, '页评论')
    page = i
    params = {
        'productId': 100017262415, #此处为不同手机的id,每个手机不同
        'score': 3,
        'sortType': 6,
        'page': page,
        'pageSize': 10,
        'callback': 'fetchJSON_comment98',
        'isShadowSku': 0,
        'fold': 1
    }

    headers = {
        'cookie': 'shshshfpa=980322f4-0d72-08ea-9cb2-4fcadde80a00-1562576627; shshshfpb=ymAFpsvPn5OjLe2TxXJVyZQ==; __jdu=16150341377512100580391; mt_xid=V2_52007VwMVUllZUF8fSx9aAWcAElNcXFtbHUEZbAYwVhdbDVkCRh9AEFsZYgdBBkEIVw1IVUlbA24KQVEPXFcIGnkaXQZnHxNaQVhbSx5AElgAbAITYl9oUWocSB9UAGIzEVVdXg==; unpl=V2_ZzNtbUBVREUmC0QBfkkMDGJRQlwSV0ATIQFGUnIZCwBnABRYclRCFnUUR1xnGl4UZwYZXEtcQRBFCEdkeBBVAWMDE1VGZxBFLV0CFSNGF1wjU00zQwBBQHcJFF0uSgwDYgcaDhFTQEJ2XBVQL0oMDDdRFAhyZ0AVRQhHZHseXAFmARddQFFFEXULRlV6HVUEZQsSbXJQcyVFDENceRhbNWYzE20AAx8TcwpBVX9UXAJnBxNfR1dBE3MMRld7GF0BbgIQVUJnQiV2; PCSYCityID=CN_110000_110100_110108; user-key=0245721f-bdeb-4f17-9fd2-b5e647ad7f3e; jwotest_product=99; __jdc=122270672; mba_muid=16150341377512100580391; wlfstk_smdl=ey5hfakeb6smwvr1ld305bkzf79ajgrx; areaId=1; ipLoc-djd=1-2800-55811-0; __jdv=122270672|baidu|-|organic|not set|1632740808675; token=48ce2d01d299337c932ec85a1154c65f,2,907080; __tk=vS2xv3k1ush1u3kxvSloXsa0YznovSTFXUawXSawushwXpJyupq0vG,2,907080; shshshfp=3da682e079013c4b17a9db085fb01ea3; shshshsID=2ee3081dbf26e0d2b12dfe9ebf1ac9a8_1_1632744359396; __jda=122270672.16150341377512100580391.1615034138.1632740809.1632744359.28; __jdb=122270672.1.16150341377512100580391|28.1632744359; 3AB9D23F7A4B3C9B=OOGFR7VEBOKC3KPZ6KF3FKUOPTYV2UTP6I26CTJWT6CBR7KDFT6DA7AKGYBOIC5VE3AGWVCO44IPRLJZQM5VPBDKRE; JSESSIONID=82C0F348483686AC9A673E31126675D3.s1',
        'referer': 'https://item.jd.com/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
        'accept-charset': 'UTF-8'
        }

    resp = requests.get(comment_url, params=params, headers=headers)
    if resp.status_code == requests.codes.ok:
        regex = re.compile(r'fetchJSON_comment98\((.*?)\);')
        json_str = regex.search(resp.text).group(1)
        json_dict = json.loads(json_str)

        for item in json_dict['comments']:
            comment = item.get('content', '')
            score = item.get('score', '')
            user = item.get('nickname', '')
            date_str = item.get('creationTime', '')
            # 处理评论发布时间
            date = time.strptime(date_str, '%Y-%m-%d %H:%M:%S')
            date_str = time.strftime('%Y-%m-%d %H:%M:%S', date)
            location_html = item.get('userClient', '')
            print(location_html)

            csvwriter.writerow({'评论': comment, '评分': score, '用户': user, '评论发布时间': date_str,})
            print('添加评论:', comment)

        time.sleep(1)

f.close()
print('评论抓取完成,共', i + 1, '页评论')

结果展示:

爬取京东手机评论,python,大数据,数据分析

数据预处理模块:

2.去除停用词以及词云图展示:

本节代码对多款手机的评论进行循环处理

此代码需要使用的stopwords.txt文件以上传至资源

import os.path

import jieba
import jieba.analyse
import jieba.posseg as pseg
import csv
from wordcloud import WordCloud
import pandas as pd

#定义需要遍历的文件名列表
file_list = ["vivo X90.csv", "vivo X80.csv", "vivo S16.csv", "vivo S15.csv", "vivo S12 .csv", "vivo IQOO 10.csv", "vivo iQOO Neo6 SE.csv", "vivo iQOO 11.csv", "vivo iQOO Neo8.csv"]


#加载停用词表
stopwords = []
with open("stopwords.txt", "r", encoding="utf-8") as f:
    for line in f.readlines():
        stopwords.append(line.strip())
#将评论数据进行分词和去除停用词处理
#循环遍历所有文件并读取处理
for file_name in file_list:
    data = pd.read_csv(file_name, encoding="utf-8")
    comments = []
    for comment in data.iloc[:, 0]:
        #去除停用词,分词
        comment = [word for word in jieba.cut(comment) if word not in stopwords]
        comment = " ".join(comment)
        comments.append(comment)
        print(comments)

    #将分词处理后的数据组合成一个字符串
    text = " ".join(comments)

    # 生成词云
    wordcloud = WordCloud(font_path="simhei.ttf", prefer_horizontal=1, min_font_size=10,
                          max_font_size=120, width=800, height=800, background_color='white',
                          collocations=False).generate(text)

    #保存词云图像
    filename = os.path.splitext(file_name)[0] + ".png"
    wordcloud.to_file(filename)

#词云图展示(一部手机)

爬取京东手机评论,python,大数据,数据分析

 数据分析及可视化模块:

3.情感分析:

#导入包

#导入模块
import pandas as pd 
import numpy as np 
from collections import defaultdict
import os
import re
import jieba
import codecs

#读取数据

#此处数据以经将多部手机的数据合并至同一csv文件,且增加了手机名称字段

data=pd.read_csv("vivo.csv",encoding='utf-8')
data.head()

爬取京东手机评论,python,大数据,数据分析

#计算情感得分:

from snownlp import SnowNLP
# 评论情感分析
# f = open('earphone_sentiment.csv',encoding='gbk') 
# line = f.readline()
with open('stopwords.txt','r',encoding='utf-8') as f:
    stopwords=set([line.replace('\n','')for line in f])
f.close()
sum=0
count=0
for i in range(len(data['评论'])):
    line=jieba.cut(data.loc[i,'评论'])           #分词
    words=''
    for seg in line:
        if seg not in stopwords and seg!=" ":        #文本清洗 
            words=words+seg+' '
    if len(words)!=0:
        print(words)        #输出每一段评论的情感得分
        d=SnowNLP(words)
        print('{}'.format(d.sentiments))
        data.loc[i,'sentiment_score']=float(d.sentiments)     #原数据框中增加情感得分列
        sum+=d.sentiments
        count+=1
score=sum/count
print('finalscore={}'.format(score))    #输出最终情感得分

 爬取京东手机评论,python,大数据,数据分析

 #在不同手机下的情感得分

#情感值以方法一计算的作为值
#获取同一列中不重复的值
a=list(data['手机名称'].unique())
sum_scores=dict()
#求对应主题的情感均值
for r in range(len(a)):
    de=data.loc[data['手机名称']==a[r]]
    sum_scores[a[r]]=round(de['sentiment_score'].mean(),2)

爬取京东手机评论,python,大数据,数据分析

#不同手机情感得分可视化(柱状图)

import seaborn as sns
import matplotlib.pyplot as plt
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#数据可视化
sns.barplot(x=list(sum_scores.values()),y=list(sum_scores.keys()))
plt.xlabel('情感值')
plt.ylabel('手机型号')
plt.title('不同手机型号下的情感得分柱形图')
for x,y in enumerate(list(sum_scores.values())): 
    plt.text(y,x,'%s'%y,va='center')
plt.show()

 爬取京东手机评论,python,大数据,数据分析

 4.主题分析

这里仍采用合并后的数据集

import pandas as pd
import re
import jieba
from gensim import corpora, models
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from collections import Counter

# 读取数据集
data = pd.read_csv('vivo.csv')

# 数据预处理,仅保留评论文本信息
stopwords = set()
with open("stopwords.txt", "r", encoding="utf-8") as f:
    for line in f:
        stopwords.add(line.strip())
text_data = []
for i in range(len(data)):
    text = str(data.iloc[i]['评论'])
    text = re.sub('[^\u4e00-\u9fff]', '', text)  # 仅保留中文
    text = " ".join([word for word in jieba.cut(text) if word not in stopwords])  # 分词
    text_data.append(text)

# 构建词典并将文本转化为bag-of-words格式的文档集合
texts = [[word for word in document.split()] for document in text_data]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]

# 训练LDA主题模型
num_topics = 3
lda_model = models.LdaModel(corpus, num_topics=num_topics, id2word=dictionary)

# 生成关键词云
plt.figure(figsize=(10, 5))
for i in range(num_topics):
    word_freq = Counter(dict(lda_model.show_topic(i, topn=20))) # 计算每个单词的出现频率
    wc = WordCloud(background_color='white', font_path='msyh.ttc')
    wc.generate_from_frequencies(word_freq) # 传入每个单词的出现频率生成词云
    plt.subplot(1, num_topics, i+1)
    plt.imshow(wc)
    plt.axis('off')
    plt.title(f'Topic #{i+1}')
plt.show()

主题词云图:

爬取京东手机评论,python,大数据,数据分析文章来源地址https://www.toymoban.com/news/detail-609063.html

到了这里,关于python数据采集课设-京东手机评论爬取与分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微博数据采集,微博爬虫,微博网页解析,完整代码(主体内容+评论内容)

    参加新闻比赛,需要获取大众对某一方面的态度信息,因此选择微博作为信息收集的一部分 微博主体内容 微博评论内容 一级评论内容 二级评论内容 以华为发布会这一热搜为例子,我们可以通过开发者模式得到信息基本都包含在下面的 div tag中 我们通过网络这一模块进行解

    2024年03月14日
    浏览(32)
  • QML android 采集手机传感器数据 并通过udp 发送

    利用 qt 开发 安卓 app ,采集手机传感器数据 并通过udp 发送

    2024年02月02日
    浏览(35)
  • 【VINS-MONO测试】安卓手机采集mono+imu数据

    上一个vins-mono环境配置测试完成后,初步建立好实验环境,接下来开始进行数据采集(cam+imu)、打包、标定、运行。 记录一下后续要更新的内容吧: *ros打包、另外两种标定方式、手机在线测试、 另一种app的测试情况 、 IMU数据的调参 * 更新一下:2023-05-11,之前有些理解不

    2024年02月11日
    浏览(63)
  • 【安卓手机采集数据(cam+imu)在vins-mono下测试】

    上一个vins-mono环境配置测试完成后,初步建立好实验环境,接下来开始进行数据采集(cam+imu)、打包、标定、运行。 记录一下后续要更新的内容吧: *ros打包、另外两种标定方式、手机在线测试、 另一种app的测试情况 、 IMU数据的调参 * 更新一下:2023-05-11,之前有些理解不

    2023年04月22日
    浏览(23)
  • 基于python商品数据采集分析可视化系统 淘宝数据采集 大数据 大屏可视化(附源码+论文)大数据毕业设计✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年02月02日
    浏览(43)
  • 大数据毕业设计:基于python商品数据采集分析可视化系统 淘宝数据采集 大数据 大屏可视化(附源码+论文)✅

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌ 毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议

    2024年02月03日
    浏览(39)
  • Python爬虫/SAP-SRM数据采集

    系统版本:SAP系统NetWeaver。SRM主要功能如下图,其中需求预测、采购执行监控、寄售库存监控是业务计划有关的数据,使用频率最高。 ​数据采集范围 ​SAP/SRM系统界面 对于使用SRM的供应商来说,他们频繁登录SRM系统多有不便,SRM数据无法与自己公司信息系统对接,导致业务

    2024年02月12日
    浏览(32)
  • Python爬虫实战:自动化数据采集与分析

    在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。 一、环境准备 首先,确保您已经

    2024年02月11日
    浏览(38)
  • Python 网络数据采集(四):Selenium 自动化

    作者:高玉涵 时间:2024.1.11 08:30 博客:blog.csdn.net/cg_i 环境:Windows 10 专业版 22H2、Python 3.10.4、selenium 4.10.0 前言 在 WEB 功能测试领域,Selenium 是一个免费、开源、跨平台的重要工具,它可以对 Chrome、Firefox、Safari 等浏览器进行测试,支持多种语言(如 Python、Java、C#、Ruby、J

    2024年01月16日
    浏览(47)
  • 【python】采集每日必看黄色软件数据~

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 模块使用: requests pip install requests re csv 安装模块 :win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源 基本思路: 明确需求: 采集网站以及数据是什么

    2023年04月21日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包