婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python 爬取京東指定商品評(píng)論并進(jìn)行情感分析

python 爬取京東指定商品評(píng)論并進(jìn)行情感分析

熱門標(biāo)簽:應(yīng)電話機(jī)器人打電話違法嗎 電銷機(jī)器人的風(fēng)險(xiǎn) 河北防封卡電銷卡 地圖標(biāo)注線上如何操作 天津電話機(jī)器人公司 400電話辦理哪種 開封語(yǔ)音外呼系統(tǒng)代理商 手機(jī)網(wǎng)頁(yè)嵌入地圖標(biāo)注位置 開封自動(dòng)外呼系統(tǒng)怎么收費(fèi)

項(xiàng)目地址

https://github.com/DA1YAYUAN/JD-comments-sentiment-analysis

爬取京東商城中指定商品下的用戶評(píng)論,對(duì)數(shù)據(jù)預(yù)處理后基于SnowNLP的sentiment模塊對(duì)文本進(jìn)行情感分析。

運(yùn)行環(huán)境

  • Mac OS X
  • Python3.7 requirements.txt
  • Pycharm

運(yùn)行方法

數(shù)據(jù)爬取(jd.comment.py)

  1. 啟動(dòng)jd_comment.py,建議修改jd_comment.py中變量user-agent為自己瀏覽器用戶代理
  2. 輸入京東商品完整URL
  3. 得到京東評(píng)論詞云,存放于jd_ciyun.jpg(詞云輪廓形狀存放于jdicon.jpg)
  4. 得到京東評(píng)論數(shù)據(jù),存放于jd_comment.csv
import os
import time
import json
import random
import csv
import re

import jieba
import requests
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 詞云形狀圖片
WC_MASK_IMG = 'jdicon.jpg'
# 評(píng)論數(shù)據(jù)保存文件
COMMENT_FILE_PATH = 'jd_comment.txt'
# 詞云字體
WC_FONT_PATH = '/Library/Fonts/Songti.ttc'


def spider_comment(page=0, key=0):
    """
    爬取京東指定頁(yè)的評(píng)價(jià)數(shù)據(jù)
    :param page: 爬取第幾,默認(rèn)值為0
    """

    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4646productId=' + key + '' \

          'score=0sortType=5page=%spageSize=10isShadowSku=0fold=1' % page
    kv = {'user-agent': 'Mozilla/5.0', 'Referer': 'https://item.jd.com/'+ key + '.html'}#原本key不輸入值,默認(rèn)為《三體》

    try:
        r = requests.get(url, headers=kv)
        r.raise_for_status()
    except:
        print('爬取失敗')
    # 截取json數(shù)據(jù)字符串
    r_json_str = r.text[26:-2]
    # 字符串轉(zhuǎn)json對(duì)象
    r_json_obj = json.loads(r_json_str)
    # 獲取評(píng)價(jià)列表數(shù)據(jù)
    r_json_comments = r_json_obj['comments']
    # 遍歷評(píng)論對(duì)象列表
    for r_json_comment in r_json_comments:
        # 以追加模式換行寫入每條評(píng)價(jià)
        with open(COMMENT_FILE_PATH, 'a+') as file:
            file.write(r_json_comment['content'] + '\n')
        # 打印評(píng)論對(duì)象中的評(píng)論內(nèi)容
        print(r_json_comment['content'])


def batch_spider_comment():
    """
        批量爬取某東評(píng)價(jià)
        """
    # 寫入數(shù)據(jù)前先清空之前的數(shù)據(jù)
    if os.path.exists(COMMENT_FILE_PATH):
        os.remove(COMMENT_FILE_PATH)
    key = input("Please enter the address:")
    key = re.sub("\D","",key)
    #通過(guò)range來(lái)設(shè)定爬取的頁(yè)面數(shù)
    for i in range(10):
        spider_comment(i,key)
        # 模擬用戶瀏覽,設(shè)置一個(gè)爬蟲間隔,防止ip被封
        time.sleep(random.random() * 5)


def cut_word():
    """
    對(duì)數(shù)據(jù)分詞
    :return: 分詞后的數(shù)據(jù)
    """
    with open(COMMENT_FILE_PATH) as file:
        comment_txt = file.read()
        wordlist = jieba.cut(comment_txt, cut_all=False)#精確模式
        wl = " ".join(wordlist)
        print(wl)
        return wl


def create_word_cloud():
    """44144127306
    生成詞云
    :return:
    """
    # 設(shè)置詞云形狀圖片
    wc_mask = np.array(Image.open(WC_MASK_IMG))
    # 設(shè)置詞云的一些配置,如:字體,背景色,詞云形狀,大小
    wc = WordCloud(background_color="white", max_words=2000, mask=wc_mask, scale=4,
                   max_font_size=50, random_state=42, font_path=WC_FONT_PATH)
    # 生成詞云
    wc.generate(cut_word())
    # 在只設(shè)置mask的情況下,你將會(huì)得到一個(gè)擁有圖片形狀的詞云
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.figure()
    plt.show()
    wc.to_file("jd_ciyun.jpg")


def txt_change_to_csv():
    with open('jd_comment.csv', 'w+', encoding="utf8", newline='')as c:
        writer_csv = csv.writer(c, dialect="excel")
        with open("jd_comment.txt", 'r', encoding='utf8')as f:
            # print(f.readlines())
            for line in f.readlines():
                # 去掉str左右端的空格并以空格分割成list
                line_list = line.strip('\n').split(',')
                print(line_list)
                writer_csv.writerow(line_list)

if __name__ == '__main__':
    # 爬取數(shù)據(jù)
    batch_spider_comment()

    #轉(zhuǎn)換數(shù)據(jù)
    txt_change_to_csv()

    # 生成詞云
    create_word_cloud()

模型訓(xùn)練(train.py)

  1. 準(zhǔn)備正負(fù)語(yǔ)料集online_shopping_10_cats.csv,分別存入negative.txt和positive.txt
  2. 啟動(dòng)train.py,新建文件sentiment.marshal,存入訓(xùn)練后的模型
  3. 找到外部庫(kù)中snownlp中sentiment模塊,將訓(xùn)練得到的sentiment.marshal.3文件覆蓋sentiment模塊中自帶的sentiment.marshal.3
# -*-coding:utf-8-*-

def train():
    from snownlp import sentiment
    print("開始訓(xùn)練數(shù)據(jù)集...")
    sentiment.train('negative.txt', 'positive.txt')#自己準(zhǔn)備數(shù)據(jù)集
    sentiment.save('sentiment.marshal')#保存訓(xùn)練模型
    #python2保存的是sentiment.marshal;python3保存的是sentiment.marshal.3
    "訓(xùn)練完成后,將訓(xùn)練完的模型,替換sentiment中的模型"

def main():
    train()  # 訓(xùn)練正負(fù)向商品評(píng)論數(shù)據(jù)集
    print("數(shù)據(jù)集訓(xùn)練完成!")

if __name__ == '__main__':
    main()

情感分析(sentiment.analysis.py)

  1. 啟動(dòng)sentiment.analysis.py
  2. 開始對(duì)jd_comment.csv中評(píng)論進(jìn)行數(shù)據(jù)處理,處理后文件存入processed_comment_data.csv
  3. sentiment模塊根據(jù)sentiment.marshal.3對(duì)評(píng)論進(jìn)行情感評(píng)分,評(píng)分結(jié)果存入result.csv
  4. 評(píng)分結(jié)果可視化,生成文件fig.png
from snownlp import sentiment
import pandas as pd
import snownlp
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

#from word_cloud import word_cloud_creation, word_cloud_implementation, word_cloud_settings

def read_csv():
    '''讀取商品評(píng)論數(shù)據(jù)文件'''
    comment_data = pd.read_csv('jd_comment.csv', encoding='utf-8',
                               sep='\n', index_col=None)
    #返回評(píng)論作為參數(shù)
    return comment_data


def clean_data(data):
    '''數(shù)據(jù)清洗'''
    df = data.dropna()  # 消除缺失數(shù)據(jù) NaN為缺失數(shù)據(jù)
    df = pd.DataFrame(df.iloc[:, 0].unique())  # 數(shù)據(jù)去重
    return df
    # print('數(shù)據(jù)清洗后:', len(df))


def clean_repeat_word(raw_str, reverse=False):
    '''去除評(píng)論中的重復(fù)使用的詞匯'''
    if reverse:
        raw_str = raw_str[::-1]
    res_str = ''
    for i in raw_str:
        if i not in res_str:
            res_str += i
    if reverse:
        res_str = res_str[::-1]
    return res_str


def processed_data(filename):
    '''清洗完畢的數(shù)據(jù),并保存'''
    df = clean_data(read_csv())#數(shù)據(jù)清洗
    ser1 = df.iloc[:, 0].apply(clean_repeat_word)#去除重復(fù)詞匯
    df2 = pd.DataFrame(ser1.apply(clean_repeat_word, reverse=True))
    df2.to_csv(f'{filename}.csv', encoding='utf-8', index_label=None, index=None)


def train():
    '''訓(xùn)練正向和負(fù)向情感數(shù)據(jù)集,并保存訓(xùn)練模型'''
    sentiment.train('negative.txt', 'positive.txt')
    sentiment.save('seg.marshal')#python2保存的是sentiment.marshal;python3保存的是sentiment.marshal.3


sentiment_list = []

res_list = []


def test(filename, to_filename):
    '''商品評(píng)論-情感分析-測(cè)試'''
    with open(f'{filename}.csv', 'r', encoding='utf-8') as fr:
        for line in fr.readlines():
            s = snownlp.SnowNLP(line)
            #調(diào)用snownlp中情感評(píng)分s.sentiments
            if s.sentiments > 0.6:
                res = '喜歡'
                res_list.append(1)
            elif s.sentiments  0.4:
                res = '不喜歡'
                res_list.append(-1)
            else:
                res = '一般'
                res_list.append(0)
            sent_dict = {
                '情感分析結(jié)果': s.sentiments,
                '評(píng)價(jià)傾向': res,
                '商品評(píng)論': line.replace('\n', '')
            }
            sentiment_list.append(sent_dict)
            print(sent_dict)
        df = pd.DataFrame(sentiment_list)
        df.to_csv(f'{to_filename}.csv', index=None, encoding='utf-8',
                  index_label=None, mode='w')


def data_virtualization():
    '''分析結(jié)果可視化,以條形圖為測(cè)試樣例'''
    font = FontProperties(fname='/System/Library/Fonts/Supplemental/Songti.ttc', size=14)
    likes = len([i for i in res_list if i == 1])
    common = len([i for i in res_list if i == 0])
    unlikes = len([i for i in res_list if i == -1])

    plt.bar([1], [likes], label='喜歡')#(坐標(biāo),評(píng)論長(zhǎng)度,名稱)
    plt.bar([2], [common], label='一般')
    plt.bar([3], [unlikes], label='不喜歡')

    x=[1,2,3]
    label=['喜歡','一般','不喜歡']
    plt.xticks(x, label)

    plt.legend()#插入圖例
    plt.xlabel('評(píng)價(jià)種類')
    plt.ylabel('評(píng)價(jià)數(shù)目')
    plt.title(u'商品評(píng)論情感分析結(jié)果-條形圖', FontProperties=font)
    plt.savefig('fig.png')
    plt.show()
'''
def word_cloud_show():
    #將商品評(píng)論轉(zhuǎn)為高頻詞匯的詞云
    wl = word_cloud_creation('jd_comment.csv')
    wc = word_cloud_settings()
    word_cloud_implementation(wl, wc)
'''

def main():
     processed_data('processed_comment_data')#數(shù)據(jù)清洗
     #train()  # 訓(xùn)練正負(fù)向商品評(píng)論數(shù)據(jù)集

     test('jd_comment', 'result')

     print('數(shù)據(jù)可視化中...')
     data_virtualization()  # 數(shù)據(jù)可視化

     print('python程序運(yùn)行結(jié)束。')

if __name__ == '__main__':
    main()

詞云輪廓圖

商品評(píng)論詞云

情感分析結(jié)果可視化

以上就是python 爬取京東指定商品評(píng)論并進(jìn)行情感分析的詳細(xì)內(nèi)容,更多關(guān)于python 爬取京東評(píng)論并進(jìn)行情感分析的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python 爬取吉首大學(xué)網(wǎng)站成績(jī)單
  • python趣味挑戰(zhàn)之爬取天氣與微博熱搜并自動(dòng)發(fā)給微信好友
  • python 爬取影視網(wǎng)站下載鏈接
  • Python爬蟲之爬取我愛(ài)我家二手房數(shù)據(jù)
  • python結(jié)合多線程爬取英雄聯(lián)盟皮膚(原理分析)
  • python爬取豆瓣電影TOP250數(shù)據(jù)
  • python爬取鏈家二手房的數(shù)據(jù)
  • 教你怎么用python爬取愛(ài)奇藝熱門電影
  • Python爬蟲之爬取最新更新的小說(shuō)網(wǎng)站
  • Python爬蟲實(shí)戰(zhàn)之爬取攜程評(píng)論

標(biāo)簽:駐馬店 宿遷 六盤水 常州 山東 江蘇 蘭州 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 爬取京東指定商品評(píng)論并進(jìn)行情感分析》,本文關(guān)鍵詞  python,爬取,京東,指定,商品,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 爬取京東指定商品評(píng)論并進(jìn)行情感分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python 爬取京東指定商品評(píng)論并進(jìn)行情感分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    99视频精品在线| 首页国产丝袜综合| 国产一区二区美女诱惑| 精品1区2区在线观看| 国产白丝精品91爽爽久久| 久久久精品综合| 成人国产在线观看| 亚洲美女屁股眼交3| 欧美巨大另类极品videosbest | 国产成人亚洲综合a∨婷婷图片 | 国产在线观看一区二区| 久久久久久久av麻豆果冻| 成人午夜看片网址| 一区二区三区中文在线观看| 久久久久久免费毛片精品| 国产91对白在线观看九色| 国产精品久久三区| 欧美日韩一二三| 国产一区二区美女诱惑| 亚洲影院免费观看| 精品欧美乱码久久久久久1区2区| 成人精品一区二区三区四区| 亚洲五码中文字幕| 国产性做久久久久久| 在线精品国精品国产尤物884a| 日本不卡的三区四区五区| 国产欧美日产一区| 欧美人牲a欧美精品| 国产成人免费在线观看| 亚洲成av人片一区二区梦乃| 久久久av毛片精品| 欧美系列一区二区| 国产69精品久久777的优势| 亚洲美女电影在线| 国产婷婷色一区二区三区| 在线观看视频一区二区欧美日韩| 激情综合五月天| 一区二区三区四区乱视频| 久久这里只精品最新地址| 在线视频观看一区| 成人国产亚洲欧美成人综合网| 日韩电影在线一区二区| 亚洲欧美激情一区二区| 精品第一国产综合精品aⅴ| 欧美日韩中文另类| 91亚洲精品久久久蜜桃网站 | 欧美96一区二区免费视频| 中文字幕视频一区| 欧美精品一区二区三区在线播放| 在线观看国产一区二区| av亚洲精华国产精华精华| 激情丁香综合五月| 日本vs亚洲vs韩国一区三区二区| 亚洲美女免费在线| 亚洲欧洲性图库| 国产精品视频一二三区 | caoporen国产精品视频| 国内精品自线一区二区三区视频| 亚洲18女电影在线观看| 一区二区三区精品视频在线| 中文字幕免费观看一区| 久久九九影视网| 26uuu精品一区二区| 日韩女优av电影在线观看| 欧美日韩一区二区欧美激情| 色婷婷国产精品| 色呦呦国产精品| 9色porny自拍视频一区二区| 成人动漫视频在线| 成年人网站91| 色综合久久中文综合久久牛| www.欧美精品一二区| 成人激情免费视频| 91社区在线播放| 91蜜桃网址入口| 色婷婷av一区二区三区软件| 精品久久久久久久人人人人传媒 | 亚洲女同一区二区| 亚洲三级免费电影| 一区二区三区日韩欧美| 亚洲免费观看高清完整版在线观看熊| 亚洲男人的天堂在线观看| 一区二区三区久久久| 天天影视色香欲综合网老头| 日韩成人伦理电影在线观看| 免费成人在线视频观看| 国内精品自线一区二区三区视频| 国产精品一区二区视频| 成人黄色小视频| 在线观看精品一区| 日韩亚洲欧美中文三级| 久久色中文字幕| 国产精品黄色在线观看| 亚洲综合一区在线| 美女免费视频一区| 成人精品视频一区二区三区尤物| 成人av在线资源网| 欧美性色aⅴ视频一区日韩精品| 欧美日韩国产片| 精品国产凹凸成av人导航| 久久精子c满五个校花| 亚洲嫩草精品久久| 麻豆视频观看网址久久| 国产91丝袜在线播放0| 色综合天天做天天爱| 91精品国产黑色紧身裤美女| 久久夜色精品一区| 亚洲制服丝袜一区| 国内外成人在线视频| 一本久久a久久免费精品不卡| 欧美日韩国产电影| 国产农村妇女毛片精品久久麻豆| 亚洲资源在线观看| 国产精品自在欧美一区| 欧美午夜一区二区| 国产亚洲美州欧州综合国| 亚洲国产精品久久久久秋霞影院 | 91精品国产91热久久久做人人| 久久综合久久综合九色| 亚洲免费高清视频在线| 久久激五月天综合精品| 色视频成人在线观看免| 2021国产精品久久精品 | 老司机免费视频一区二区| 99re这里只有精品6| 精品国精品国产尤物美女| 一区二区不卡在线播放 | 国产精品欧美极品| 午夜成人免费电影| 91同城在线观看| 久久综合九色综合欧美就去吻 | 国产乱码字幕精品高清av | 欧美xxxxx牲另类人与| 亚洲私人黄色宅男| 国产麻豆9l精品三级站| 91精品婷婷国产综合久久竹菊| 日韩一区有码在线| 东方aⅴ免费观看久久av| 日韩一区二区精品| 亚洲国产婷婷综合在线精品| 波多野结衣精品在线| 国产视频一区二区在线| 久久99久久久欧美国产| 欧美一级二级在线观看| 一区二区三区久久| 一本久道久久综合中文字幕| 久久久精品国产免费观看同学| 麻豆精品国产91久久久久久| 欧美三日本三级三级在线播放| 亚洲免费资源在线播放| www.视频一区| 中日韩免费视频中文字幕| 福利视频网站一区二区三区| 2021国产精品久久精品| 国产一区二区三区视频在线播放| 日韩午夜精品电影| 麻豆成人在线观看| 精品国产91洋老外米糕| 精品一区二区三区久久久| 日韩一级黄色大片| 激情综合色综合久久| 欧美videos中文字幕| 国产一区二区三区四区五区入口| 久久综合九色综合97婷婷女人 | 欧美一区二区啪啪| 日韩高清中文字幕一区| 欧美一区二区三区人| 麻豆精品久久精品色综合| 精品捆绑美女sm三区| 国产成人自拍高清视频在线免费播放| 日韩三级视频在线看| 精品无码三级在线观看视频| 精品久久久久香蕉网| 国产精品1区二区.| 亚洲欧美在线另类| 欧美日韩免费在线视频| 日本va欧美va瓶| 久久久久国产精品麻豆| 成人av小说网| 亚洲地区一二三色| 日韩一区二区电影| 国产成人高清在线| 亚洲人成人一区二区在线观看| 欧洲精品在线观看| 美女在线观看视频一区二区| 国产欧美一区二区精品婷婷| 91小视频免费观看| 日本一道高清亚洲日美韩| 欧美精品一区二区三区四区 | 成人短视频下载| 亚洲综合视频网| 日韩欧美高清一区| 不卡免费追剧大全电视剧网站| 亚洲精品免费在线| 日韩一区二区视频| 成人高清视频在线| 裸体一区二区三区| 亚洲日本中文字幕区| 日韩欧美色电影| av中文字幕一区|