Python爬取豆瓣短評并生成詞云分析

、項目概述

本項目的目標是爬取豆瓣上某部電影的短評數據,并生成詞云進行情感分析。我們將使用Python編程語言,借助爬蟲技術獲取數據,并利用自然語言處理和數據可視化工具進行分析。具體步驟包括:

  1. 爬取豆瓣短評數據。
  2. 數據清洗和預處理。
  3. 使用詞云技術生成可視化結果。
  4. 分析詞云結果,提取關鍵信息。

二、技術棧

  • Python:強大的編程語言,支持多種庫和框架。
  • Requests:用于發送HTTP請求,獲取網頁數據。
  • BeautifulSoup:用于解析HTML頁面,提取所需數據。
  • jieba:中文分詞庫,用于對短評進行分詞處理。
  • wordcloud:用于生成詞云,展示高頻詞匯。
  • matplotlib:用于繪制詞云圖像。

三、爬取豆瓣短評

1. 環境準備

在開始之前,需要安裝以下Python庫:

pip install requests
pip install beautifulsoup4
pip install jieba
pip install wordcloud
pip install matplotlib

2. 爬蟲實現

豆瓣的短評數據可以通過訪問電影詳情頁的短評部分獲取。以下是爬取豆瓣短評的代碼實現:

import requests
from bs4 import BeautifulSoup# 代理信息
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"# 構造代理服務器的認證信息
proxies = {"http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}","https": f"https://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
}def get_douban_comments(movie_id, start=0, limit=20):"""爬取豆瓣電影短評:param movie_id: 豆瓣電影ID:param start: 起始評論位置:param limit: 每次獲取的評論數量:return: 評論列表"""comments = []headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}url = f"https://movie.douban.com/subject/{movie_id}/comments?start={start}&limit={limit}"response = requests.get(url, headers=headers, proxies=proxies)  # 使用代理if response.status_code == 200:soup = BeautifulSoup(response.text, 'html.parser')comment_items = soup.find_all('div', class_='comment')for item in comment_items:comment = item.find('p', class_='comment-content').get_text().strip()comments.append(comment)return comments# 示例:爬取電影《肖申克的救贖》的短評
movie_id = '1292052'  # 豆瓣電影ID
all_comments = []
for i in range(0, 100, 20):  # 獲取前100條評論comments = get_douban_comments(movie_id, start=i)all_comments.extend(comments)print(f'共獲取到 {len(all_comments)} 條短評')

3. 數據清洗

爬取到的短評數據可能包含HTML標簽、特殊字符或無關信息,需要進行清洗和預處理。以下是數據清洗的代碼:

import redef clean_comments(comments):"""清洗短評數據:param comments: 評論列表:return: 清洗后的評論列表"""cleaned_comments = []for comment in comments:# 去除HTML標簽和特殊字符cleaned_comment = re.sub(r'<.*?>', '', comment)cleaned_comment = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', ' ', cleaned_comment)cleaned_comments.append(cleaned_comment)return cleaned_commentscleaned_comments = clean_comments(all_comments)
print(cleaned_comments[:5])  # 查看清洗后的前5條評論

四、生成詞云

詞云是一種常見的文本可視化方式,通過將高頻詞匯以更大的字體顯示,直觀地展示文本內容的重點。以下是生成詞云的代碼實現:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as pltdef generate_wordcloud(comments):"""生成詞云:param comments: 評論列表"""# 合并所有評論為一個長文本text = ' '.join(comments)# 使用jieba進行中文分詞words = jieba.cut(text)word_text = ' '.join(words)# 創建WordCloud對象wordcloud = WordCloud(font_path='path/to/simhei.ttf',  # 指定中文字體路徑width=800,height=600,background_color='white',  # 設置詞云背景顏色max_words=100,  # 設置最多顯示的單詞數min_font_size=10,  # 設置最小字體大小max_font_size=100,  # 設置最大字體大小).generate(word_text)# 使用matplotlib繪制詞云plt.figure(figsize=(10, 8))plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')  # 關閉坐標軸plt.show()generate_wordcloud(cleaned_comments)

5. 中文字體問題

在生成詞云時,需要注意中文字體的處理。默認情況下,WordCloud庫不支持中文字符,因此需要指定一個支持中文的字體文件路徑。例如,可以使用Windows系統中的“simhei.ttf”(黑體)字體文件。

五、詞云分析

通過生成的詞云,我們可以直觀地看到高頻詞匯,從而分析用戶對電影的評價。例如,如果詞云中出現了“感人”“經典”“震撼”等詞匯,則表明用戶對該電影的評價較為積極;如果出現“無聊”“拖沓”“差”等詞匯,則可能表示用戶對該電影的評價不佳。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87320.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Controller Area Network (CAN) 通信機制簡介

目錄 1. CAN 概述 2. 物理結構與傳輸機制 3. 消息格式與仲裁機制 4. 錯誤檢測與總線狀態 5. 工業用 CAN 接口 6. 本講總結 1. CAN 概述 CAN&#xff08;Controller Area Network&#xff09;是由德國博世&#xff08;Bosch&#xff09;公司于 1983 年提出的串行通信協議…

我有一個想法

我有一個想法 我想為家鄉做點事情&#xff0c;但是又不知道從哪里開始。 也許為家鄉的教育做點事情是比較靠譜的。 于是&#xff0c;我就想到了&#xff0c;是不是可以在高中學校&#xff0c;設立一個“鴻鵠”獎學金&#xff1f; 這個獎學金怎么使用呢&#xff1f; 在每年9月份…

【Pandas】pandas DataFrame stack

Pandas2.2 DataFrame Reshaping sorting transposing 方法描述DataFrame.droplevel(level[, axis])用于**從 DataFrame 的索引&#xff08;行或列&#xff09;中刪除指定層級&#xff08;level&#xff09;**的方法DataFrame.pivot(*, columns[, index, values])用于重塑 Dat…

Java 自動關閉資源語法糖 - try-with-resources

文章目錄 Java 自動關閉資源語法糖 - try-with-resources前言優勢1、自動資源管理2、處理多重資源3、異常處理更健壯4、適用條件 總結 Java 自動關閉資源語法糖 - try-with-resources 前言 日常開發中&#xff0c;我們經常會看到如下代碼&#xff1a; try (InputStream is …

MyBatis中的動態SQL是什么?

大家好&#xff0c;我是鋒哥。今天分享關于【MyBatis中的動態SQL是什么&#xff1f;】面試題。希望對大家有幫助&#xff1b; MyBatis中的動態SQL是什么&#xff1f; 超硬核AI學習資料&#xff0c;現在永久免費了&#xff01; MyBatis中的動態SQL指的是根據不同的條件&#x…

【Java反射】如何新增對象中的屬性,與JavaScript中的直接添加屬性有什么區別?

問&#xff1a; Object obj new Object(); //獲取一個類的class對象 Class<?> objClass Object.class; try { //通過newInstance方法創建一個新的屬性 Field newField Field.class.newInstance(); newField.setAccessible(true); newField.set(obj, “index”); }ca…

java spring boot Swagger安裝及使用

https://springdoc.org/ 可能原因分析 &#x1f50d; 原因 1&#xff1a;SpringFox 版本與 Spring Boot 版本不兼容 ? SpringFox 3.0.0 不完全兼容 Spring Boot 2.6 及更高版本&#xff0c;可能導致 NullPointerException。 Spring Boot 3.x 完全不支持 SpringFox&#xff0c…

電商云倉/前置倉的物流高效監控、管理、預警系統,快遞鳥DMS

在電商行業蓬勃發展的當下&#xff0c;電商云倉和前置倉作為物流配送體系的關鍵環節&#xff0c;其高效運作直接影響著消費者體驗與企業競爭力。快遞鳥 DMS 物流交付管理平臺&#xff0c;以其卓越的物流監控、管理及預警功能&#xff0c;成為電商企業優化云倉和前置倉物流管理的…

HarmonyOS Next深度解析:高德定位SDK高效集成與實戰指南

HarmoyOS Next 實現高德定位SDK 注&#xff1a;作者采用版本為 HarmonyOS 5.0.0 Release SDK和DevEco Studio 5.0.0 Release。 1.獲取本地AppID&#xff1a; 在index.pages的abountToAppear( ) 方法中獲取appID、并打印在Log日志&#xff0c;即可在程序運行時獲取本地項目的…

【技術】記一次 Docker 中的 ES 數據遷移,使用 Reindex API

記一次 Docker 中的 ES 數據遷移&#xff0c;使用 Reindex API 環境背景需求背景開始遷移確認老 ES 的訪問地址在新 ES 中創建索引的 Mapping (選配)在新 ES 中配置老 ES 的地址開始遷移數據數據驗證 首先聲明&#xff0c;是因為環境限制&#xff0c;沒有辦法使用同步工具&…

yii2基礎版本安裝記錄,實錄有點亂看標題即可

因為使用php 安裝的是docker環境所有進入到容器安裝ridh_mfe_api 為掛載目錄 Nginx及PHP掛載配置 因為使用php 安裝的是docker環境所有進入到容器安裝 ridh_mfe_api 為掛載目錄 進入容器 % docker exec -it php sh /var/www/html # ls index.html index.php composer crea…

前端跨域解決方案(3):CORS

1 CORS 核心 CORS&#xff08;Cross-Origin Resource Sharing&#xff09;&#xff0c;即跨域資源共享&#xff0c;是目前最主流的跨域方案&#xff0c;它通過服務器返回的特殊 HTTP 頭&#xff0c;允許瀏覽器放行跨域請求。與傳統的 JSONP 相比&#xff0c;CORS 具有明顯的優…

SpringBoot源碼解析(十五):spring-boot-autoconfigure.jar的模塊化設計

前言 SpringBoot的自動配置是其革命性特性的核心&#xff0c;而spring-boot-autoconfigure.jar則是這一機制的物理載體。本文將深入剖析這個JAR包的模塊化設計哲學&#xff0c;從包結構劃分、條件注解體系到自動配置加載機制&#xff0c;全方位解析SpringBoot如何通過精妙的模…

學習筆記九:docker容器日志問題

docker容器日志問題 背景如何處理日志問題主要通過日志輪詢方式處理。修改 Docker 配置日志快速清理 背景 Docker 默認使用的是 json-file 日志驅動。日志會一直寫&#xff0c;一直寫&#xff0c;沒有限制、沒有輪轉、沒有清理&#xff01; 日志默認位置&#xff1a; /var/lib…

低成本同屏方案:電腦 + 路由器實現 50 臺安卓平板實時同屏

引言 在教育機構、小型培訓場景或企業簡易會議中&#xff0c;常面臨以最低成本實現多設備同屏的需求。本文針對 "電腦 路由器 50 臺安卓平板" 的極簡硬件組合&#xff0c;詳細剖析實時同屏的實現路徑&#xff0c;從問題分析到技術落地提供全流程解決方案&#xff0…

Unity ECS DOTS技術實現50000個cube隨機循環移動流程

前言 之前使用過ECS面向組件開發&#xff0c;一直想試一下Unity的ECS DOTS技術&#xff0c;但是苦于入門門檻太高&#xff0c;下載官方的Demo&#xff0c;發現代碼哪哪兒都看不懂&#xff0c;一大堆API聞所未聞&#xff0c;而且沒有一個入門的流程&#xff0c;導致無法進行下去…

設計模式精講 Day 3:抽象工廠模式(Abstract Factory Pattern)

【設計模式精講 Day 3】抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09; 文章簡述 在軟件開發中&#xff0c;隨著業務復雜度的提升&#xff0c;系統需要支持多種產品族的創建。抽象工廠模式正是為了解決這一問題而誕生的設計模式之一。本文作為“設計模式精講”…

Kafka消息零丟失架構設計:從原理到實戰的全方位保障

引言 在構建高可靠分布式系統時&#xff0c;Kafka作為核心消息中間件被廣泛應用于數據管道、實時流處理等關鍵場景。然而&#xff0c;分布式環境下的網絡波動、節點故障等因素可能導致消息丟失&#xff0c;如何確保Kafka實現端到端的消息零丟失成為架構設計的關鍵挑戰。本文將…

Python學習筆記:錯誤和異常處理

1. 什么是錯誤和異常 在Python中&#xff0c;錯誤可以分為兩類&#xff1a; 語法錯誤(Syntax Errors)&#xff1a;代碼不符合Python語法規則異常(Exceptions)&#xff1a;語法正確的代碼在運行時發生的錯誤 # 語法錯誤示例 print("Hello World" # 缺少右括號# 異…

為什么要進行行為驗證,行為驗證方式有哪些?

進行行為驗證的主要目的是提高賬戶安全性、防范自動化攻擊、增強用戶身份確認精準度、優化用戶體驗。其中&#xff0c;提高賬戶安全性最為關鍵。行為驗證能通過分析用戶的行為模式&#xff0c;如操作習慣、設備使用特點等&#xff0c;識別出非正常或惡意活動&#xff0c;迅速采…