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

主頁 > 知識庫 > python爬取晉江文學城小說評論(情緒分析)

python爬取晉江文學城小說評論(情緒分析)

熱門標簽:地圖標注的意義點 浙江電銷卡外呼系統好用嗎 地圖標注微信發送位置不顯示 南京銷售外呼系統軟件 地圖制圖標注位置改變是移位嗎 房產電銷外呼系統 上海機器人外呼系統哪家好 蓋州市地圖標注 315電話機器人廣告

1. 收集數據

1.1 爬取晉江文學城收藏排行榜前50頁的小說信息

獲取收藏榜前50頁的小說列表,第一頁網址為 ‘http://www.jjwxc.net/bookbase.php?fw0=0fbsj=0ycx0=0xx2=2mainview0=0sd0=0lx0=0fg0=0sortType=0isfinish=0collectiontypes=orssearchkeywords=page=1' , 第二頁網址中page=2,以此類推,直到第50頁中page=50。爬取每個小說的ID,小說名字,小說作者。將爬取到的信息存儲到晉江排行榜【按收藏數】.txt文件中。

import requests
from bs4 import BeautifulSoup
import bs4
import re
import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import jieba
import seaborn as sns
import xlrd
from xlutils.copy import copy
# 一些魔法命令,使得matplotlib畫圖時嵌入單元中而不是新開一個窗口
%matplotlib inline
plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'
%load_ext autoreload
%autoreload 2
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn import metrics
from sklearn.model_selection  import train_test_split
  1. 爬取小說基本信息 ,主要思路;
  2. 找到需要爬取的所有信息主體tbody;
  3. 分別找到每個信息對應的小標簽td(a),數清楚在所有標簽中的順序;
  4. 存進txt文檔時按順序存儲。
headers = {"User-Agent": "Mozilla/5.0"}
for n in range(1,50):
    url = 'http://www.jjwxc.net/bookbase.php?fw0=0fbsj=0ycx0=0xx2=2mainview0=0sd0=0lx0=0fg0=0sortType=0isfinish=0collectiontypes=orssearchkeywords=page={}'.format(n)
    html = requests.get(url,headers=headers)
    html.encoding = html.apparent_encoding
    soup = BeautifulSoup(html.text, 'html.parser')
    for tr in soup.find_all('tbody'):
            tds=tr('td')  
            a = tr('a') 
            count=0
            id=[]
            for u in tr.find_all('a'):
                    count=count+1
                    book_url=u.get('href') # 獲取小說主頁的url
                    p = re.compile(r'\d+')
                    book_id = p.findall(book_url)[0]  # 獲取小說ID
                    if(count%2==0):
                        id.append(book_id)
            for n in range(0,100):
                    with open('./data/晉江排行榜【按收藏數】.txt','a+',encoding='utf-8') as f:
                            print("{0}\t{1}\t{2}".format(id[n],a[n*2+1].string,a[n*2].string),file=f)  # 序號 書名 作者

1.2 查看爬蟲結果 

分別查看前8部小說的ID和名字

# 查看收藏榜前8部小說的ID
with open('./data/晉江排行榜【按收藏數】.txt','r',encoding='utf-8',errors='ignore') as f:
    book_list = f.readlines()
    id_list = [item.split('\t')[0] for item in book_list]
print(id_list[:8])
# 查看收藏榜前8部小說的名字
name_list = [item.split('\t')[1] for item in book_list]
print(name_list[:8])

1.3 ** 爬取每部小說的評論** 。

找到小說的評論區,第一部小說《天官賜福》的第一頁評論網址為 ‘http://www.jjwxc.net/comment.php?novelid=3200611huati=1' ,3200611是小說ID,1是評論頁數,這部小說第二頁網址為'http://www.jjwxc.net/comment.php?novelid=3200611huati=2' 。下一部小說《撒野》的ID是2956313,它的第一頁評論網址為'http://www.jjwxc.net/comment.php?novelid=2956313huati=1' ,以此類推,爬取所有小說的評論和打分。為了避免有一些小說評論數不夠多,自己設定每部小說只爬取5頁的評論。

爬取思路與爬取小說信息大致相同,不同的是將爬取到的信息存儲到xls文件中。

headers = {"User-Agent": "Mozilla/5.0"}
with open('./data/晉江排行榜【按收藏數】.txt','r',encoding='utf-8') as f:
            book_list = f.readlines()
            id_list = [item.split('\t')[0] for item in book_list]
for book_id in id_list:
    for page in range(1,6):
        url="http://www.jjwxc.net/comment.php?novelid={}huati=1page={}".format(book_id,page)
        html = requests.get(url,headers=headers)
        html.encoding = html.apparent_encoding
        soup = BeautifulSoup(html.text, 'html.parser')
        scores=[]
        comments=[]
        for item1 in soup.find_all('span',"coltext"):
            score=item1('span')
            scores.append(score[2].string)
        for item2 in soup.find_all('div',"readbody"):
            comment=item2('span')
            comments.append(comment[0].string)
        for i in range(0,len(comments)):
            excel = xlrd.open_workbook('./data/jjwxc1.xls')
            wb = copy(excel)
            w_sheet = wb.get_sheet(0)
            sheet = excel.sheets()[0]
            nrow = sheet.nrows # 文件行數
            w_sheet.write(nrow, 0, book_id)
            w_sheet.write(nrow, 1, comments[i])
            w_sheet.write(nrow, 2, scores[i])
            wb.save('./data/jjwxc1.xls')

2. 數據加載和預處理

預處理包括:

  • 格式轉化;上一步將爬取信息存到了xls文件,將xls格式文件轉化為csv格式文件方便下一步加載。
  • 數據去重;爬取過程中某些頁面爬取了多次,導致csv文件包含重復的行。
  • 短評去重;對同一部小說,或者不同的小說,可能存在評論內容相同的行。
  • 添加情緒標簽
  • 去除停用詞和分詞
  • 短評可視化

2.1 格式轉化

使用pandas模塊可以快速將xls文件轉換為.csv

# 格式轉化
ex=pd.read_excel("./data/jjwxc.xls")
ex.to_csv("./data/jjwxc.csv",encoding="gb18030")
# 加載評論
review = pd.read_csv("./data/jjwxc.csv",names=['ID','comment','score'],encoding='gb18030')

2.2 數據去重

去除重復的行

# 去重
review = review.drop_duplicates()

2.3 短評去重

去除評論相同的行

# 刪除評論內容重復的行
review= review.drop_duplicates('comment')
review.shape

2.4 添加情緒標簽

根據打分的分數來添加情緒標簽,觀察晉江文學城的打分機制發現,打分區間在[-2,2]內,且打2分的人數占大多數,于是將分數為2的評論看作是好評,情緒標簽為1,而低于2分的看作是差評,情緒標簽為0。

# 添加情緒標簽
review['emotion'] = (review.score ==2) * 1
# 打亂順序
review = review.sample(frac=1).reset_index(drop=True)
print(review.shape)

2.5 去除停用詞和分詞

短評內容進行分詞并去掉停用詞

def review_without_stop(review):
    # 打開停用詞文件
    with open("./data/emotion_stopwords.txt","r",encoding="utf-8") as f:
        stop_word = [x.strip() for x in f.readlines()] 
    all_stop_words = set(stop_word) # 刪除停用詞中重復的項
    # 短評中的非中文字符替換為''
    review = re.sub("[^\u4e00-\u9fa5]",'',review)
    # 去除全角空白字符
    review = review.replace("\u3000","") 
    # 分詞
    review = jieba.cut(review)
    # 過濾一個字的詞
    review = filter(lambda x: len(x)>1,review)
    # 去除停用詞
    review = filter(lambda x: x not in all_stop_words,review)
    return ' '.join(review)
# 自定義分詞字典
jieba.load_userdict("./data/emotion_userdict.txt")
review['cut_jieba'] = review.comment.apply(review_without_stop)

【注】停用詞和分詞文件需要自己定義

# 查看一些評論
review.head()

# 好評中一些評論包含“不想”,“不喜歡”
review[(review['cut_jieba'] == '不想')  (review['emotion'] == 1)]
review[(review['cut_jieba'] == '不喜歡')  (review['emotion'] == 1)]
# 好評中出現的消極情緒詞,去除這些評論
def change_negtive_like(cut_text):
    word_list = cut_text.split()
    if "不喜歡" in word_list:
        for i in range(len(word_list)):
            if word_list[i] == "不喜歡":
                word_list[i] = ""
        return " ".join(word_list)
    elif "不想" in word_list:
        for i in range(len(word_list)):
            if word_list[i] == "不想":
                word_list[i] = ""
        return " ".join(word_list)
    else:
        return cut_text
review.loc[review['emotion'] == 1,'cut_jieba'] = review[review['emotion'] == 1].cut_jieba.apply(change_negtive_like)
# 一些評論內容為空,去除這些為空的評論
review = review[~(review['cut_jieba'] == '')]
review.shape

2.6 短評可視化

對所有短評進行可視化

from wordcloud import WordCloud
from imageio import imread
mask = imread("./data/cloud.jpg")
font = './data/FZSTK.TTF'
wc = WordCloud(
    font_path= font,
    max_words=2000, # 設置最大現實的字數
    max_font_size=250,# 設置字體最大值
    background_color = "white",
    random_state=30,
    mask = mask)
wc.generate(''.join(review['cut_jieba'])) # 生成詞云
plt.imshow(wc)
plt.axis('off')

 對emotion為1的短評進行可視化

from wordcloud import WordCloud
from imageio import imread
mask = imread("./data/piggy.jpg")
font = './data/FZSTK.TTF'
wc1 = WordCloud(
    font_path= font,
    max_words=2000, # 設置最大現實的字數
    max_font_size=300,# 設置字體最大值
    background_color = "white",
    random_state=30,
    mask = mask)
wc1.generate(''.join(review['cut_jieba'][review['emotion']==1]))
plt.imshow(wc1)
plt.axis('off')

對score為-2的短評進行可視化

wc1.generate(''.join(review['cut_jieba'][review['score']==-2])) # 生成詞云
plt.imshow(wc1)
plt.axis('off')

【注】詞云和字體自己定義

3. 訓練模型

3.1 建立訓練數據集和測試數據集

由于已經為分析準備好了數據,所以現在需要將數據分成訓練數據集和測試數據集。將數據分成兩部分:75%的訓練數據和25%的測試數據。

x, y = review['cut_jieba'], review['emotion']
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.25) 
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

3.2 特征提取

使用 sklearn 包中的 TfidfVectorizer 方法進行特征提取。

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vect = TfidfVectorizer(decode_error='ignore',
                             token_pattern=r"\b[^\d\W]\w+\b", # 剔除向量化結果中的數字
                             analyzer='word',
                             ngram_range=(2,4),
                            max_df = 0.8,
                            min_df = 3)
Xtrain = tfidf_vect.fit_transform(x_train)
Xtest = tfidf_vect.transform(x_test)
print(Xtrain.shape)
print(Xtest.shape)

3.3 用樸素貝葉斯完成中文文本分類器

from sklearn.naive_bayes import MultinomialNB
review_classifier = MultinomialNB()
review_classifier.fit(Xtrain,y_train)
# 對測試集的樣本進行預測
y_pred = review_classifier.predict(Xtest)
metrics.confusion_matrix(y_test, y_pred) # 混淆矩陣
# 利用 sns 模塊查看測試值和預測值構成的熱圖
colorMetrics = metrics.confusion_matrix(y_test, y_pred)
sns.heatmap(colorMetrics,annot=True,fmt='d')

# 分類報告
# 給出每個類的準確率,召回率和F值,以及這三個參數和宏平均值
print(metrics.classification_report(y_test,y_pred)) 

print(metrics.accuracy_score(y_test,y_pred))
from sklearn.model_selection import cross_val_score
score1 = cross_val_score(review_classifier,Xtrain,y_train,cv=10,scoring="accuracy").mean()
print(score1)

3.4 用邏輯回歸完成中文文本分類

from sklearn.linear_model import LogisticRegression  
LR_model = LogisticRegression(penalty='l2',max_iter=3000)  
LR_model.fit(Xtrain,y_train)
# 對測試集的樣本進行預測
y_pred = LR_model.predict(Xtest)
metrics.confusion_matrix(y_test, y_pred) # 混淆矩陣
print(LR_model.score(Xtest,y_test))
# 給出每個類的準確率,召回率和F值,以及這三個參數和宏平均值
print(metrics.classification_report(y_test,y_pred))

4. 結果分析

(1)詞云分析:

  1. 詞云1中最明顯的詞匯是“喜歡”;
  2. 詞云2中的詞匯與詞云1區別不大,因為所有短評中好評占大多數;
  3. 由差評生成的詞云3出現了“不好”、“一般”、“硬傷”等負面色彩的詞語。

(2)影響情感分析準確性的原因:

  1. 獲取到的短評數量比較少;
  2. 由于小說中對主角討論比較多,一些小說角色名字會重復出現在短評內,一定程度影響對評論的感情分析;
  3. 沒有刪除過于短小的評論;
  4. 分詞后中發現代表積極或消極情緒的詞匯往往不會成為單獨短評,而是和別的詞一起出現,對于查找差評中的積極詞匯和好評中的消極詞匯造成一定困難。
  5. 短評中出現明顯代表正面色彩和負面色彩的詞匯較少。

到此這篇關于爬取晉江文學城小說評論(情緒分析)的文章就介紹到這了,希望對你有所幫助,更多相關python爬取內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python爬蟲之爬取最新更新的小說網站
  • python使用XPath解析數據爬取起點小說網數據
  • python爬蟲之爬取筆趣閣小說
  • Python爬蟲入門教程02之筆趣閣小說爬取
  • python 爬取小說并下載的示例
  • python爬取”頂點小說網“《純陽劍尊》的示例代碼
  • Python scrapy爬取小說代碼案例詳解
  • Python爬取365好書中小說代碼實例
  • python爬蟲爬取筆趣網小說網站過程圖解
  • Python實現的爬取小說爬蟲功能示例
  • Python制作爬蟲采集小說
  • python 爬取國內小說網站

標簽:貴州 雙鴨山 日照 克拉瑪依 金華 陽泉 臨汾 赤峰

巨人網絡通訊聲明:本文標題《python爬取晉江文學城小說評論(情緒分析)》,本文關鍵詞  python,爬取,晉江,文學,城,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python爬取晉江文學城小說評論(情緒分析)》相關的同類信息!
  • 本頁收集關于python爬取晉江文學城小說評論(情緒分析)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    性久久久久久久久| 国产久卡久卡久卡久卡视频精品| 亚洲欧美一区二区视频| 97se亚洲国产综合自在线| 日韩女优电影在线观看| 久久精工是国产品牌吗| 久久亚洲精华国产精华液| 一本久久a久久免费精品不卡| 久久精品国产99国产精品| 亚洲乱码国产乱码精品精的特点 | www精品美女久久久tv| 久久麻豆一区二区| 日本道色综合久久| 精品国产91久久久久久久妲己| 亚洲成人动漫av| 不卡电影免费在线播放一区| 日本成人在线看| 一区二区三区日韩精品视频| 综合久久一区二区三区| 中文字幕一区在线| xnxx国产精品| 色综合一个色综合| 美国欧美日韩国产在线播放| 中文字幕日韩一区| 国产拍揄自揄精品视频麻豆| 欧美午夜理伦三级在线观看| 欧美精品粉嫩高潮一区二区| av网站免费线看精品| 秋霞av亚洲一区二区三| 蜜桃视频一区二区三区在线观看| 亚洲欧洲成人自拍| 国产亚洲综合av| 91福利在线导航| 欧美日韩综合色| 欧美日韩在线一区二区| 成人手机电影网| 粉嫩aⅴ一区二区三区四区五区| 午夜精品一区二区三区三上悠亚 | 日韩午夜精品视频| 欧美一区二区免费视频| 日韩一级成人av| 国产午夜精品一区二区| 久久精品水蜜桃av综合天堂| 亚洲美女免费视频| 亚洲妇熟xx妇色黄| 日日夜夜精品视频天天综合网| 国产一区二区日韩精品| 成人高清免费观看| 99国产欧美另类久久久精品| 亚洲精品免费一二三区| 亚洲免费av在线| 亚洲va欧美va人人爽| 亚洲一区视频在线观看视频| 日本一区二区三区视频视频| 亚洲综合免费观看高清完整版在线| 亚洲韩国一区二区三区| 日本三级亚洲精品| 日本中文字幕一区| 99视频热这里只有精品免费| 538在线一区二区精品国产| 欧美成人激情免费网| 亚洲视频1区2区| 亚洲不卡一区二区三区| 国产乱淫av一区二区三区| 欧美日韩你懂的| 在线成人av网站| 欧美激情综合五月色丁香小说| 亚洲综合另类小说| 北岛玲一区二区三区四区| 一本一本大道香蕉久在线精品 | 久久奇米777| 中文字幕二三区不卡| 粉嫩久久99精品久久久久久夜| 欧美一级搡bbbb搡bbbb| 国产欧美一区二区精品秋霞影院| 国产精品免费视频一区| 日本一道高清亚洲日美韩| 91丝袜美女网| 久久一区二区三区四区| 国产视频一区不卡| 日产精品久久久久久久性色| 国产成人免费视频网站高清观看视频| 亚洲自拍偷拍av| 国产99久久精品| 欧美一区午夜视频在线观看| 国产精品成人免费| 免费xxxx性欧美18vr| 成人av电影免费在线播放| 日韩一区二区视频| 一卡二卡欧美日韩| 国产1区2区3区精品美女| 精品久久一区二区三区| 一区二区三区四区蜜桃| 粉嫩av一区二区三区粉嫩| 久久在线免费观看| 免费观看91视频大全| 91色|porny| 欧美一区二区三区四区五区| 国产精品色一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 麻豆成人91精品二区三区| 色婷婷久久99综合精品jk白丝| 欧美日韩精品免费| 91精品国产欧美一区二区成人| 欧美日韩一区二区三区四区五区 | 欧美一区二区三区男人的天堂| 久久久久97国产精华液好用吗| 久久国产三级精品| 精品欧美一区二区在线观看| 亚洲精品老司机| 国产99精品视频| 3d动漫精品啪啪| 亚洲国产精品久久人人爱蜜臀| 在线免费观看日本一区| 久久先锋影音av| 青青草视频一区| 欧美成人伊人久久综合网| 亚洲乱码中文字幕| 91在线观看视频| 一区二区三区美女| 欧美午夜精品一区二区三区| 日韩av网站免费在线| 精品乱人伦小说| 国产麻豆一精品一av一免费| 久久精品亚洲精品国产欧美kt∨ | 男人的天堂久久精品| 91精品免费观看| 男人的天堂久久精品| 久久久激情视频| 国产精品自拍av| 欧美电影免费观看高清完整版在线观看| 亚洲蜜桃精久久久久久久| 99re这里都是精品| 亚洲福利视频三区| 欧美午夜一区二区三区| 免费精品视频在线| 国产精品乱码一区二区三区软件| 成人精品一区二区三区四区| 国产精品久久久久久户外露出 | 日韩区在线观看| 国产精品综合一区二区| 日韩理论片网站| 在线观看视频91| 五月婷婷另类国产| 久久久久久电影| 91在线精品一区二区三区| 五月婷婷激情综合网| 91免费看视频| 最新热久久免费视频| 99国产精品99久久久久久| 日韩精品成人一区二区在线| 精品久久99ma| 国产馆精品极品| 中文字幕免费在线观看视频一区| 国产福利91精品一区二区三区| 久久婷婷久久一区二区三区| 成人禁用看黄a在线| 欧美经典一区二区| 91美女在线看| 免费高清在线一区| 亚洲色图20p| 欧美亚洲自拍偷拍| 久久不见久久见免费视频7| 亚洲欧美视频在线观看| 91蝌蚪porny| 舔着乳尖日韩一区| 欧美精品一区二区三区高清aⅴ| 国产成人精品一区二区三区网站观看| 一区二区免费视频| 91精品国产91热久久久做人人 | 日韩av一区二区三区| 中文字幕一区二区三区蜜月| 成人av网站在线观看| 亚洲精选视频免费看| 欧美三级三级三级爽爽爽| 久久aⅴ国产欧美74aaa| 欧美极品少妇xxxxⅹ高跟鞋| 欧美电影在线免费观看| 国产成人免费高清| 蜜乳av一区二区三区| 这里只有精品免费| 成人免费毛片a| 久久国产免费看| 午夜久久福利影院| 一区二区三区丝袜| 国产精品天天摸av网| 欧美tickling挠脚心丨vk| 国产一区二区三区av电影 | 日本一区二区三区视频视频| 欧美精品日韩综合在线| 国产一区二区三区精品欧美日韩一区二区三区 | 色成年激情久久综合| 综合久久给合久久狠狠狠97色| 色综合久久久久网| 成人精品高清在线| 国产精品亚洲专一区二区三区| 亚洲精选免费视频| 亚洲天天做日日做天天谢日日欢| 久久久青草青青国产亚洲免观| 欧美日韩一级片在线观看|