python爬取豆瓣电影并分析

用Python爬取中国医生电影评论生成词云并实现数据可视化(内附源码)
今日目标:爬取豆瓣电影中国医生评论实现数据可视化
前言
前段时间,主旋律电影《中国医生》上线,大家有没有去看呢?反正我去看了,有点感人(其实哭得稀里哗啦) 。看完后,内心感概万分,回到家缓了好久 。看了电影的海报画面,想着可以爬一爬大家对电影的评论,正好给大家写文了 。于是,利用下班时间给大家做了这个爬虫项目 。废话不多了,直接开整 。

python爬取豆瓣电影并分析

文章插图
工具使用
开发环境
系统:Windows10 64位
Python版本:Python3.7
IDE:Pycharm
第三方库:selenium lxml re wordcloud PIL numpy jieba matplotlib
代码演示
饼图
python爬取豆瓣电影并分析

文章插图
饼图
词云生成
python爬取豆瓣电影并分析

文章插图
词云生成
柱状图生成
python爬取豆瓣电影并分析

文章插图
柱状图生成
项目思路分析
1 获取网址规律
python爬取豆瓣电影并分析

文章插图
可以看到 start 和 status是变化的关键
在这个页面可以通过xpath获取地址网页 评论详情 和评分
地址网页:
python爬取豆瓣电影并分析

文章插图
评论详情:
python爬取豆瓣电影并分析

文章插图
评分 :
python爬取豆瓣电影并分析

文章插图
2 打开地址网页,获取地址信息
python爬取豆瓣电影并分析

文章插图
有些没有地址信息 所有需要获取全部 后期通过数据处理获取有地址信息的
3 把获取的数据进行解析 分别存放三个文件
python爬取豆瓣电影并分析

文章插图
4 通过读取相应的文件生成相应的图表
python爬取豆瓣电影并分析

文章插图
项目难点分析
1 滑块验证
这个参考代码里面的滑块验证的方法
通过像素对比找到缺口
移动一段距离 之后速度变化慢慢往前面走 到达缺口就能够验证成功
2 切换iframe
# 切换iframedriver.switch_to.frame(1)需要切换iframe才能找到滑块和输入账号 密码 的元素位置
3 显示等待
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="profile"]/div/div[2]')))等待元素出现才进行下一步的处理
4 数据处理
出现不合法的数据 比如 该用户已经主动注销帐号
判断源代码中是否存在 如果存在就跳过 防止等待时间过长 退出程序
if driver.page_source.__contains__("`该用户已经主动注销帐号`"):continue5 抓取思维
采取先抓大再抓小
这样可以确定几个元素是相对应的
循环的时候会再次使用xpath 此时的xpath写法
需要加一个 .
item = {"href": email_detail.xpath('./div/a/@href'),"detail": email_detail.xpath("./div[2]/p/span//text()"),"rate": email_detail.xpath("./div[2]/h3/span[2]/span[2]/@class")}6 json模块默认编码
默认:ascii码 为了中文的正确显示 需要传递参数ensure_ascii
f.write(json.dumps(email, ensure_ascii=False) + ",\n")7 词云图的生成
python爬取豆瓣电影并分析

推荐阅读