从python爬取豆瓣读书网中的评论人数和评分怎么进行数据处理
时间: 2024-01-24 20:20:45 浏览: 35
要从豆瓣读书网中爬取评论人数和评分数据,可以使用Python的爬虫库Scrapy或BeautifulSoup来获取数据。你需要分析网站的HTML结构,找到评论人数和评分所在的标签和属性。然后可以将获取到的数据存储到本地文件或数据库中。
一旦你完成了数据的爬取,你可以使用Python的pandas库来进行数据处理和分析。你可以将数据读取到pandas的DataFrame中,然后对数据进行清洗、筛选、统计和可视化等操作。以下是一个简单的示例代码,演示如何从CSV文件中读取数据并计算出评论人数和评分的平均值:
```python
import pandas as pd
# 读取CSV文件中的数据到DataFrame中
df = pd.read_csv('books.csv')
# 计算评论人数和评分的平均值
avg_ratings = df['rating'].mean()
avg_reviews = df['reviews'].mean()
# 打印结果
print('平均评分:{:.2f}'.format(avg_ratings))
print('平均评论人数:{:.2f}'.format(avg_reviews))
```
请注意,这只是一个简单的示例代码,实际上你可能需要进行更复杂的数据处理和分析,具体取决于你的需求和数据结构。
相关问题
用python爬取豆瓣读书网中的评分和评论人数怎么进行数据可视化分析
对于从豆瓣读书网中爬取下来的评分和评论人数,你可以使用 Python 中的数据可视化库来进行分析和展示,比较常用的有 Matplotlib、Seaborn 和 Plotly 等。
以下是一个使用 Matplotlib 来进行评分和评论人数可视化分析的例子:
```python
import pymongo
import matplotlib.pyplot as plt
# 连接 MongoDB 数据库
client = pymongo.MongoClient('localhost', 27017)
db = client['douban']
collection = db['books']
# 查询评分和评论人数数据
data = collection.aggregate([
{'$group': {'_id': '$rating', 'count': {'$sum': 1}}},
{'$sort': {'_id': 1}}
])
# 将数据转换为列表
x = []
y = []
for item in data:
x.append(float(item['_id']))
y.append(int(item['count']))
# 绘制柱状图
plt.bar(x, y, width=0.2)
plt.xlabel('Rating')
plt.ylabel('Count')
plt.title('Douban Book Rating')
plt.show()
```
这段代码首先连接到 MongoDB 数据库,查询评分和评论人数数据,并将数据转换为列表。然后使用 Matplotlib 绘制柱状图,展示不同评分的数量。
你也可以使用其他的数据可视化库进行分析和展示,例如 Seaborn 和 Plotly。它们的用法和 Matplotlib 类似,你可以根据实际情况选择适合自己的库来进行数据可视化分析。
用python爬取豆瓣读书网中的评论人数和评分存储到mongodb中,怎么进行数据处理
首先,你需要安装pymongo库来连接mongodb数据库。可以使用以下命令进行安装:
```
pip install pymongo
```
然后,你需要使用BeautifulSoup库解析HTML页面,获取评论人数和评分。以下是一个简单的爬取代码示例:
``` python
from bs4 import BeautifulSoup
import requests
import pymongo
# 连接MongoDB数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['douban_book']
collection = db['book_reviews']
url = 'https://book.douban.com/subject/1084336/comments/'
# 发送HTTP请求
response = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all('span', {'class': 'comment-info'})
# 遍历评论列表并存储到MongoDB中
for comment in comments:
rating = comment.find('span', {'class': 'rating'}).attrs['title']
votes = comment.find('span', {'class': 'votes'}).text
collection.insert_one({'rating': rating, 'votes': votes})
```
这个代码会将每个评论的评分和评论人数存储到MongoDB数据库中的`book_reviews`集合中。接下来,你可以使用MongoDB的聚合操作来对数据进行处理。以下是一些常用的聚合操作:
1. 计算平均评分
``` python
result = collection.aggregate([
{'$group': {'_id': None, 'avg_rating': {'$avg': '$rating'}}}
])
for doc in result:
print('The average rating is:', doc['avg_rating'])
```
2. 计算评分的分布
``` python
result = collection.aggregate([
{'$group': {'_id': '$rating', 'count': {'$sum': 1}}},
{'$sort': {'_id': 1}}
])
for doc in result:
print(doc['_id'], doc['count'])
```
3. 统计每个评分对应的评论人数
``` python
result = collection.aggregate([
{'$group': {'_id': '$rating', 'total_votes': {'$sum': {'$toInt': '$votes'}}}},
{'$sort': {'_id': 1}}
])
for doc in result:
print(doc['_id'], doc['total_votes'])
```
这些聚合操作可以帮助你更好地理解数据,发现数据中的规律和趋势。当然,根据具体的需求,你还可以进行更多的数据处理和分析。