Python爬虫实战(1)requests爬取豆瓣电影TOP250

Python063

Python爬虫实战(1)requests爬取豆瓣电影TOP250,第1张

爬取时间:2020/11/25

系统环境:Windows 10

所用工具:Jupyter Notebook\Python 3.0

涉及的库:requests\lxml\pandas\matplotlib\numpy

蛋肥想法: 先将电影名称、原名、评分、评价人数、分类信息从网站上爬取下来。

蛋肥想法: print数据列表后发现电影原名、分类信息等存在不需要的字符,需预先处理;同时因为后续想做一个豆瓣电影TOP250的维度分布图,而同一电影存在多个发行国家、类型(如“法国 美国 / 剧情 动作 犯罪”),为了简(偷)便(懒),这里均取第一个作为记入的数据;最后将数据保存为xlsx。

蛋肥想法: 蛋肥想知道在豆瓣电影TOP250中年份、国家、类型的维度数据,为了练手,使用刚才保存成xlsx的数据,并分别画成雷达图、柱形图、扇形图。

先看效果图:

地址:( https://movie.douban.com/subject/1292052/comments?sort=time&status=P)

爬取前1w条评论

存储成txt文档

数据预处理

中文分词

统计top10的高频词

可视化展示高频词

根据词频生成词云

审核评论

================================================================

配置准备

中文分词需要jieba

词云绘制需要wordcloud

可视化展示中需要的中文字体

网上公开资源中找一个中文停用词表

根据分词结果自己制作新增词表

准备一张词云背景图(附加项,不做要求)

paddlehub配置

#安装jieba分词和词云

pip install jieba

pip install wordcloud

#安装paddle

pip install --upgrade PaddlePaddle

#安装模型

#hub install porn_detection_lstm==1.1.0

pip install --upgrade paddlehub

pip install  numpy

#安装Beautifulsoup

pip install BeautifulSoup4

Github地址: https://github.com/mikite/python_sp_shawshank

有可能遇到的问题:

1.UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 1: invalid continuation byte

解决方法:

1.不使用urlLib换做requests

2.去掉请求头中的 'Accept-Encoding': 'gzip, deflate, br'

3.返回值reponse 转字符串指定编码utf-8

# 'Accept-Encoding': 'gzip, deflate, br',

2.关于cookie

解决方法:

1.去豆瓣请求头中复制cookie设置到请求头中

'Cookie': 'bid=WD6_t6hVqgM'

3.请求返回418的问题

解决方案模拟设置请求头,设置user-agent

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',

4.使用beautifulsoup获取不到评论

解决方法:

第一步:指定解析参数为'lxml'

soupComment = BeautifulSoup(html, 'lxml')

第二步:

findAll方法指定css文件的class名

print('网页内容:', soupComment.prettify())

comments = soupComment.findAll(class_='short')

点击获取源码