爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何
作者:互联网
文章目录
前言
爬取豆瓣影评,爬虫代码已经封装好,修改请求头 和url即可采集你想要采集的电影影评
提示:以下是本篇文章正文内容,下面案例可供参考
一、分析URL
观察url我们可以发发现其url变化的规律,页数增加 start也增加,start=(页数-1)*20
第一页:https://movie.douban.com/subject/35158160/reviews?start=0
第二页:https://movie.douban.com/subject/35158160/reviews?start=20
第三页:https://movie.douban.com/subject/35158160/reviews?start=40
二、获取影评
我们观察页面的影评,其中有很多的影评因为字数过多,所以被限制显示
现在我们通过抓包工具,点击展开按钮,看是否可以抓到数据,通过抓包后,我们抓到了一个名为full的数据包,观察后发现这就是完整的影评
现在我们分析这条数据包的url,很明显的其中的数据就是表示的这个影评的某个序号,我们可以通过先获取这串数据,然后就可以获取完整的影评
https://movie.douban.com/j/review/13364212/full
而这串数字就是下图
三、代码实现
首先我们写一个函数,用于获取完整影评的这串数据
def Get_Id(self,url):
try:
text=requests.get(url=url,headers=self.head).text
html=etree.HTML(text)
id_list=html.xpath('//div[@class="review-list "]/div/@data-cid')
self.Id_list.extend(id_list)
except Exception as e:
print("出现异常:",e)
pass
再写一个函数,用于接受id获取评论并存储
def Parser_Data(self,id):
try:
url="https://movie.douban.com/j/review/%s/full"%(str(id))
text=requests.get(url=url,headers=self.head).json()
html = etree.HTML(text["html"])
text = "".join(html.xpath("//text()")).replace("\n", "").replace("\t", "").replace(" ", "")
with open("film_review.txt","a",encoding="utf-8") as f:
f.write(text)
f.write("\n")
except Exception as e:
print("出现异常:",e)
pass
最后,还需要一个主函数,用于传递url给Get_id函数,调用所有的函数
def main(self):
self.head={
'User-Agent':'',
'cookie':''
}
start_page=input("请输入起始页数:")
end_page=input("请输入结束页数:")
urls=[]
for i in range(int(start_page),int(end_page)):
url="https://movie.douban.com/subject/35158160/reviews?start=%d"%((i-1)*20)
urls.append(url)
self.Id_list = []
for url in urls:
self.Get_Id(url)
sleep(2)
for id in self.Id_list:
self.Parser_Data(id)
sleep(2)
四、词云
最后我们来编写,词云展示的代码
from wordcloud import WordCloud
import matplotlib.pyplot as plt
plt.rc('figure',figsize=(20,10),dpi=200)
font = r'C:\Windows\Fonts\simfang.ttf'
with open("film_review.txt",encoding="utf-8") as f:
text=f.read().replace("\n","")
wc = WordCloud(font_path=font, background_color='White',width=1920,height=1080).generate("".join(text))
plt.imshow(wc)
plt.axis("off")
plt.savefig('D:\Desktop\词云.jpg')
plt.show()
最终生成的词云
我是没有看过这部电影的阿,但是从大家对这部电影的影评 上来看,用词最多的首先是我的姐姐这个电影名称,然后是重男轻女、姐姐、弟弟、长姐如母,其中还有一个次挺显眼的是 扶弟魔。好了现在 我大概能猜到剧情了,不是我喜欢的类型。
文中用的爬虫代码 可在公众号“阿虚学Python”中回复“豆瓣影评”获取,可直接修改请求头和电影id直接使用,如果你对爬虫感兴趣,可去我主页看看已经更新多个爬虫项目
谢谢大家的观看
标签:start,Python,text,self,爬虫,url,豆瓣,影评,id 来源: https://blog.csdn.net/weixin_47163937/article/details/115444912