python爬取豆瓣电影评论做出情感分析
时间: 2023-10-05 22:04:07 浏览: 122
Python利用Scrapy框架爬取豆瓣电影示例
好的,这个问题可以分为两个部分来回答。第一部分是如何爬取豆瓣电影评论,第二部分是如何做出情感分析。
1. 爬取豆瓣电影评论
我们可以使用 Python 爬虫库 BeautifulSoup 和 requests 来爬取豆瓣电影评论。首先需要找到电影的页面,例如电影《肖申克的救赎》的页面为 https://movie.douban.com/subject/1292052/,可以使用 requests 库发送 GET 请求获取页面的 HTML 代码,然后使用 BeautifulSoup 库解析得到电影评论的 URL。
接下来,我们可以使用 requests 库再次发送 GET 请求获取评论页面的 HTML 代码,然后使用 BeautifulSoup 库解析得到评论内容。具体代码如下:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头,防止被豆瓣屏蔽
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 = 'https://movie.douban.com/subject/1292052/'
# 发送 GET 请求获取页面的 HTML 代码
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 获取评论的 URL
comments_url = soup.find('a', {'href': 'comments?status=P'}).get('href')
# 发送 GET 请求获取评论页面的 HTML 代码
comments_response = requests.get(comments_url, headers=headers)
comments_soup = BeautifulSoup(comments_response.text, 'html.parser')
# 解析得到评论内容
comments = comments_soup.find_all('span', {'class': 'short'})
for comment in comments:
print(comment.text.strip())
```
2. 情感分析
对于情感分析,我们可以使用 Python 自然语言处理库 NLTK 和情感分析库 TextBlob。首先需要安装这两个库,可以使用 pip 命令进行安装:
```bash
pip install nltk textblob
```
然后,我们需要先对评论内容进行分词和词性标注,可以使用 NLTK 库的 tokenize 和 pos_tag 方法。接着,我们需要将每个词语转换为它的基本形式(即词干提取),可以使用 NLTK 库的 PorterStemmer 类。最后,我们可以使用 TextBlob 库的 sentiment 方法得到每个评论的情感得分,情感得分范围为 -1 到 1。
具体代码如下:
```python
import nltk
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
from textblob import TextBlob
# 下载 NLTK 数据
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('stopwords')
# 读取评论内容
comments = ['这部电影太棒了!', '太失望了,浪费时间。']
# 分词和词性标注
tokenized_comments = [nltk.pos_tag(nltk.word_tokenize(comment)) for comment in comments]
# 去除停用词和标点符号
stop_words = stopwords.words('english')
filtered_comments = [[word for word, tag in comment if word not in stop_words and word.isalnum()] for comment in tokenized_comments]
# 词干提取
stemmer = PorterStemmer()
stemmed_comments = [[stemmer.stem(word) for word in comment] for comment in filtered_comments]
# 情感分析
for i, comment in enumerate(comments):
blob = TextBlob(' '.join(stemmed_comments[i]))
sentiment = blob.sentiment.polarity
print(comment, '情感得分:', sentiment)
```
以上就是使用 Python 爬虫库 BeautifulSoup 和 requests 爬取豆瓣电影评论并做出情感分析的方法,希望可以帮到你。
阅读全文