利用Python实现大江大河评论数据可视化。废话不多说。
让我们愉快地开始吧~
Python版本: 3.6.4
相关模块:
requests模块
proxy2808
pandas模块
pyecharts模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
因为豆瓣反爬还是比较严重的
2808PROXY提供的代理服务
没有用代理的话基本就没戏了
虽然评论有两万多条,但是豆瓣在登陆的情况下,也只是放出500条数据。
本次只获取全部评论以及差评评论标签页下的数据,合计约为900多条。
然后便是获取用户的注册时间。
900多个用户,900多个请求。
我相信不用代理,绝对Game Over。
评论及用户信息获取的代码
import time
import requests
import proxy2808
from bs4 import BeautifulSoup
USERNAME = '用户名'
PASSWORD = '密码'
headers = {
'Cookie': '你的Cookie值',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
def get_comments(page, proxy_url_secured):
"""
评论获取
"""
# 热门评论获取
url = 'https://movie.douban.com/subject/26797690/comments?start=' + str(page) + '&limit=20&sort=new_score&status=P'
# 好评获取
# url = 'https://movie.douban.com/subject/26797690/comments?start=' + str(page) + '&limit=20&sort=new_score&status=P&percent_type=h'
# 一般评论获取
# url = 'https://movie.douban.com/subject/26797690/comments?start=' + str(page) + '&limit=20&sort=new_score&status=P&percent_type=m'
# 差评获取
# url = 'https://movie.douban.com/subject/26797690/comments?start=' + str(page) + '&limit=20&sort=new_score&status=P&percent_type=l'
# 使用2808proxy代理
response = requests.get(url=url, headers=headers, proxies={
'http': proxy_url_secured, 'https': proxy_url_secured})
soup = BeautifulSoup(response.text, 'html.parser')
for div in soup.find_all(class_='comment-item'):
time.sleep(3)
# 评论信息
comment_info = div.find(class_='comment-info')
# 用户名
user_name = comment_info.find('a').get_text()
print(user_name)
# 用户主页地址
user_url = comment_info.find('a').attrs['href']
print(user_url)
# 获取用户注册时间,看水军必备<