公众号后台回复“图书“,了解更多号主新书内容

作者:Riggle

来源:文科数据员

本文目录如下:

第0步,准备

本文运行环境:Python3.8,Pycharm;Win10系统

需要的库 :requests、bs4

整个项目的思路是

  1. 找到目标电视剧分集剧情的链接

  2. 根据第一集剧情的网页链接,构造全部剧集的链接

  3. 爬取内容并保存

  4. 简单可视化

第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库进行分词,然后使用matplotlibbar(),和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__": 充分发挥作用,专职模块的输入和输出。

利用matplotlibstylecloud库进行简单的可视化呈现,信息价值呈现的还不错,但审美和分析上还需要更加更加优化。

公众号后台回复 爬剧情 获取全文完整代码。

◆ ◆ ◆  ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

python爬取电视剧情并分析角色戏份相关推荐

  1. 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读

    利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...

  2. Python爬取、存储、分析、可视化豆瓣电影Top250

    Python爬取.存储.分析.可视化豆瓣电影Top250 网站链接: https://movie.douban.com/top250 @文章目录 前言 一.python爬取目标数据,并写入csv文件 ...

  3. python爬取岗位数据并分析_Python年薪最高有50w|探秘全国近1600个Python岗位数据分析...

    原创 xinxin 菜鸟学Python 阅读本文大概需要3分钟 Python学了这么久,相信很多小伙伴都想知道钱途如何,全国各大城市招聘Python的岗位有多少,都招哪些职位,年薪如何等等,我爬取了拉 ...

  4. python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云

    目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...

  5. python爬取豆瓣电影并分析_爬取豆瓣电影top250提取电影分类进行数据分析

    标签(空格分隔):python爬虫 一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250 页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入 ...

  6. python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...

    原创: 菜鸟哥 菜鸟学Python 最近区块链技术再次被大家热议,既然区块链受到如此高的关注,我们就不妨去采集数据分析看看,目前所有与区块链相关的招聘信息吧. 1数据的爬取 首先是对于数据的爬取,由于 ...

  7. Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的

    CSDN 小姐姐们恭祝所有朋友新年快乐! 作者 | 罗昭成,设计 | 张藐,责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 亲爱的小伙伴们,马上就到 2019 年了,你的 2018 年 ...

  8. python爬取b站弹幕分析_B站弹幕爬取原理解析(python)

    感谢 原理 概念 cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得 步骤BV转cid 浏览器输入:https://api.bilibili.com/x/player/pagelist? ...

  9. python爬取豆瓣电影top250_用Python爬取豆瓣电影TOP250分析

    / 01 / Scrapy 之前了解了pyspider框架的使用,但是就它而言,只能应用于一些简单的爬取. 对于反爬程度高的网站,它就显得力不从心. 那么就轮到Scrapy上场了,目前Python中使 ...

最新文章

  1. Jackson 框架,轻易转换JSON
  2. 中断技术在计算机系统中的应用,中斷在操作系统中的应用.doc
  3. 1008 数组元素循环右移问题 (20分)
  4. ThreadLocal原理和用法
  5. ubuntu为python处理图片安装图片数据增强库imgaug
  6. html5中web存储(localStorage、sessionStorage)与cookie的区别?????
  7. php 查oracle 表不存在报错处理,合同信息查询时,报错提示oracle数据库执行异常,表或视图不存在...
  8. swift混编调用oc编写的Xib UIView出现[Storyboard] Unknown class in Interface Builder file.问题的解决
  9. 腾讯云服务器2003系统,腾讯云服务器windows2003系统续用的说明
  10. 苹果手机计算机怎么放桌面,苹果手机桌面图标怎么随意摆放 iPhone桌面图标随意摆放教程 (全文)...
  11. MySql 递归应用
  12. 深入解析Superdome 2:惠普关键业务平台再加强?
  13. MapReduce算法(将数据按照 /OutputData/城市名称/日期(YYYY-MM-dd)/类型(固定Gn)/imsi.txt )
  14. 移动式无线蓝牙RFID+二维码扫描一体机|读卡器HX-R58C-B在安卓与苹果手机上如何操作?
  15. Mac装机必备软件2020最全下载集合
  16. 浅谈38K红外发射接受编码(非常好)
  17. Python文件读取
  18. Graphics.Blit
  19. c语言 11 getchar实现大小写字母转换
  20. 【Unity编程】四元数(Quaternion)与欧拉角

热门文章

  1. python遍历多层字典_Python遍历嵌套字典的几种方法
  2. DirectInput编程基础-游戏手柄编程
  3. 异步电机矢量分析与控制
  4. python PIL读取图像转换为灰度图及二值图像
  5. EFI启动盘修改BIOS隐藏选项DVMT等显存参数提升性能
  6. android手机清理软件推荐,最好用的手机清理app
  7. Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转
  8. 机械臂——六轴机械臂操作空间运动分析
  9. c蔚语言艺术,伊能静的语言艺术,写下老公和好友章子怡,网友称赞
  10. SPN/MTN标准及其进展是什么情况?