python爬取电视剧情并分析角色戏份
公众号后台回复“图书“,了解更多号主新书内容
作者:Riggle
来源:文科数据员
本文目录如下:
第0步,准备
本文运行环境:Python3.8,Pycharm;Win10系统
需要的库 :requests、bs4
整个项目的思路是
找到目标电视剧分集剧情的链接
根据第一集剧情的网页链接,构造全部剧集的链接
爬取内容并保存
简单可视化
第1步,分析目标网页
本文的目标网页为《从前有座灵剑山》的分集剧情
分析链接
第一集的链接:https://www.jingdianlaoge.com/news/10_3829_1.htm
第三十集的链接:https://www.jingdianlaoge.com/news/10_3829_30.htm
数据猿发现,每一集仅数字改变,所以只需要在代码里枚举集数构造到链接里,即可实现爬取全部剧情网页。
转化为代码如下:
url_list = []
for i in range(1, num+1):url = page_link[:-5]+'{}.htm'.format(i)url_list.append(url)
解析所爬位置
浏览器内按F12
,查看该剧情页面的html代码,crtl+F
来查询某一章节``,从而找到剧情内容所在的位置,可以发现没有动态加载,且全部都在一个div标签里,非常便于爬取。
第2步,解析页面
bs4解析文本
可以定位到章节所在的位置在/html/body/div[6]/div[1]/div[1]/div/div/div[1]/p
标签中,而所有P
标签的内容非常整齐,都在class="page-center-main ml-10 talk-main-info"
的div
里。所以可以使用bs4库的BeautifulSoup
库,使用get_text()方法
定位获取该div
标签下全部P
标签的文本内容。
soup = BeautifulSoup(r.text, "lxml")
result = soup.find('div',{'class':'page-center-main ml-10 talk-main-info'}).get_text()
第3步,自动化爬取
伪装浏览器响应头
这里,因为数据量小,所以不需要使用fake_useragent
库生成实时改变的响应头来伪装浏览器,可以直接晚上找一个user-agent
来伪装浏览器。
然后,直接使用requests库的get()方法传入当前页面的链接和响应头,即可获取整个网页html
内容。为了避免不必需要的错误,可以给这个html
网页限定为通用的utf-8
格式编码。
header = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
r = requests.get(url, headers=header)
r.encoding = "utf-8"
第4步,写入文件
写入txt文件
使用writelines()
按集分行写入同一个txt中。
#全部下载一个文件里
with open("剧情.txt", "a",encoding='utf-8') as f:f.write('这是第{}集,网页链接为:'.format(i+1)+j + "\n")# 标记集数的,不需要的话可以注释掉这一行。f.writelines(content)f.write("\n")print('爬取结束,请查看剧情.txt文件')
也可以在open
中利用format()
方法写入多个文件,实现按集写入多个txt中。
# 分集下载到多个文件,可以替换上面with
with open("第{}集.txt".format(i+1), "a") as f:f.write(content)
第5步,可视化
这里,数据猿想知道主要人物的戏份,也就是出场频次和顺序大概是怎么样的。
主要使用python的jieba
库进行分词,然后使用matplotlib
的bar()
,和barh()
进行角色的出场频次和顺序的可视化。
jieba分词
首先,确定要分析的主角人物
# 欲分析的人物名列表
roles_l = ['王陆','王舞','海云帆','风铃','琉璃仙','梁秋','朱秦','风吟','闻宝','王忠','海天阔','仙翁老人']
将人物名加入jieba
中,以免分词过程中割裂名字,造成误伤
import jieba
for role in roles_l:jieba.add_word(role)
提取人物出场频次
首先,读取爬虫得到的剧情文档
with open('剧情.txt','r',encoding='utf-8') as f:fhwz_list = f.readlines()
然后,对该内容进行清洗并分词
fhwz_fc_list = []
for rm_content in fhwz_list:split_word =jieba.lcut(rm_content.replace('\n','').strip(''))for i in split_word:if len(i)>= 2:fhwz_fc_list.append(i)
fhwz_fc_list
得到分词后的列表
柱形图展示人物出场频次和顺序
首先,计算人物的出场频次
fhwz_dict = {}
for role in roles_l:fhwz_dict[role] = fhwz_fc_list.count(role)
使用bar()图可视化出来
可以发现,张绍刚扮演的“仙翁老人”没怎么在剧情中出现过,戏份还是极少地,王陆出现这么多,说明这部剧很有可能是 “大男主” 电视剧。
计算人物的出场顺序。这里的以剧情的字数为单位,首次出现的字数越多,说明出场越晚。
# 人物出现顺序
order ={}
with open('剧情.txt','r',encoding='utf-8') as f:str_fhwz = f.read()
print(str_fhwz.replace('\n',''))for i in roles_l:val = str_fhwz.find(i)order[i]=val
order = sorted(order.items(), key=lambda order:order[1],reverse = False)
order=dict(order)
使用barh()图可视化出来
词云图展示整体情况
stylecloud
可以下载个性图标为蒙版,制作有特色的词云图。数据猿这里使用mountain
为图标。
import stylecloud
from PIL import Imagestylecloud.gen_stylecloud(text=text,palette='tableau.BlueRed_6', # 设置配色方案icon_name='fas fa-mountain', # 设置蒙版方案font_path="msyh.ttc")
Image.open("stylecloud.png")
当然,数据猿的审美不咋地,这个图标并不好看,想要更多好看图标,需访问如下地址
https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87
然后,复制图标名字,替换代码中的mountain
即可。
icon_name='fas fa-mountain'
了解更多stylecloud
使用详情,访问如下地址
https://github.com/minimaxir/stylecloud
小结:
相比于之前的爬虫代码,这次使用模块的思路来组合函数,使得两个函数都只实现一个功能,if __name__ == "__main__":
充分发挥作用,专职模块的输入和输出。
利用matplotlib
和stylecloud
库进行简单的可视化呈现,信息价值呈现的还不错,但审美和分析上还需要更加更加优化。
公众号后台回复 爬剧情 获取全文完整代码。
◆ ◆ ◆ ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
python爬取电视剧情并分析角色戏份相关推荐
- 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读
利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...
- Python爬取、存储、分析、可视化豆瓣电影Top250
Python爬取.存储.分析.可视化豆瓣电影Top250 网站链接: https://movie.douban.com/top250 @文章目录 前言 一.python爬取目标数据,并写入csv文件 ...
- python爬取岗位数据并分析_Python年薪最高有50w|探秘全国近1600个Python岗位数据分析...
原创 xinxin 菜鸟学Python 阅读本文大概需要3分钟 Python学了这么久,相信很多小伙伴都想知道钱途如何,全国各大城市招聘Python的岗位有多少,都招哪些职位,年薪如何等等,我爬取了拉 ...
- python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云
目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...
- python爬取豆瓣电影并分析_爬取豆瓣电影top250提取电影分类进行数据分析
标签(空格分隔):python爬虫 一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250 页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入 ...
- python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...
原创: 菜鸟哥 菜鸟学Python 最近区块链技术再次被大家热议,既然区块链受到如此高的关注,我们就不妨去采集数据分析看看,目前所有与区块链相关的招聘信息吧. 1数据的爬取 首先是对于数据的爬取,由于 ...
- Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
CSDN 小姐姐们恭祝所有朋友新年快乐! 作者 | 罗昭成,设计 | 张藐,责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 亲爱的小伙伴们,马上就到 2019 年了,你的 2018 年 ...
- python爬取b站弹幕分析_B站弹幕爬取原理解析(python)
感谢 原理 概念 cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得 步骤BV转cid 浏览器输入:https://api.bilibili.com/x/player/pagelist? ...
- python爬取豆瓣电影top250_用Python爬取豆瓣电影TOP250分析
/ 01 / Scrapy 之前了解了pyspider框架的使用,但是就它而言,只能应用于一些简单的爬取. 对于反爬程度高的网站,它就显得力不从心. 那么就轮到Scrapy上场了,目前Python中使 ...
最新文章
- Jackson 框架,轻易转换JSON
- 中断技术在计算机系统中的应用,中斷在操作系统中的应用.doc
- 1008 数组元素循环右移问题 (20分)
- ThreadLocal原理和用法
- ubuntu为python处理图片安装图片数据增强库imgaug
- html5中web存储(localStorage、sessionStorage)与cookie的区别?????
- php 查oracle 表不存在报错处理,合同信息查询时,报错提示oracle数据库执行异常,表或视图不存在...
- swift混编调用oc编写的Xib UIView出现[Storyboard] Unknown class in Interface Builder file.问题的解决
- 腾讯云服务器2003系统,腾讯云服务器windows2003系统续用的说明
- 苹果手机计算机怎么放桌面,苹果手机桌面图标怎么随意摆放 iPhone桌面图标随意摆放教程 (全文)...
- MySql 递归应用
- 深入解析Superdome 2:惠普关键业务平台再加强?
- MapReduce算法(将数据按照 /OutputData/城市名称/日期(YYYY-MM-dd)/类型(固定Gn)/imsi.txt )
- 移动式无线蓝牙RFID+二维码扫描一体机|读卡器HX-R58C-B在安卓与苹果手机上如何操作?
- Mac装机必备软件2020最全下载集合
- 浅谈38K红外发射接受编码(非常好)
- Python文件读取
- Graphics.Blit
- c语言 11 getchar实现大小写字母转换
- 【Unity编程】四元数(Quaternion)与欧拉角