《民国奇探》的d幕有点逗比,用 Python 爬下来看看

《民国奇探》的d幕有点逗比,用 Python 爬下来看看,第1张

概述电视剧《民国奇探》是一部充斥着逗比风的探案剧,剧中主要角色:三土、四爷、白小姐,三土这个角色类似于《名侦探柯南》中的柯南但带有搞笑属性,四爷则类似于毛利小五郎但有大哥范且武功高强,三土尚文四爷尚武,白小姐大多时候扮演着傻白甜的角色。因为该剧目前大多数时候都处于爱奇艺电视

电视剧《民国奇探》是一部充斥着逗比风的探案剧,剧中主要角色:三土、四爷、白小姐,三土这个角色类似于《名侦探柯南》中的柯南但带有搞笑属性,四爷则类似于毛利小五郎但有大哥范且武功高强,三土尚文四爷尚武,白小姐大多时候扮演着傻白甜的角色。

因为该剧目前大多数时候都处于爱奇艺电视剧的榜首位置,所以自己也看了几集,总的来说剧情紧凑,剧风逗比,当然最令我印象深刻的还是网友们逗比的d幕,所以我决定用 Python 将d幕爬下来大家一起瞧瞧。

数据爬取

现在开始我们的爬取工作,先用浏览器打开电视剧的网页,地址为:https://www.iqiyi.com/v_19rx2un304.HTML?vfrm=pcw_home&vfrmblk=B&vfrmrst=fcs_0_t12,我们使用开发者工具的 Network 功能,进到 Network 控制台后,我们先使用 Ctrl+R 命令重新加载一下网页,然后再通过过滤器搜索 bullet,如下图所示:这里的d幕数据是以 .z 形式的压缩文件存在的,如下图所示:我们可以看出压缩文件命名规则为 tvID_300_n.z,所以我们先来获取 tvID 列表,代码实现如下所示:

 
def get_tvID():    # tv_ID 列表    tv_ID_List = []    for i in range(1, 5):        url = 'https://pcw-API.iqiyi.com/albums/album/avListinfo?' \              'aID=245212201&page='\              + str(i) + '&size=30'        res = requests.get(url).text        res_Json = Json.loads(res)        # 视频列表        move_List = res_Json['data']['epsodeList']        for j in move_List:            tv_ID_List.append(j['tvID'])    return tv_ID_List

获取到 tvID 列表后,我们就可以根据 tvID 获取d幕的压缩文件了,然后再对其进行解压及存储,实现代码如下所示:

 
def save_bullet(tvID):    for page in range(1, 10):        url = 'https://cmts.iqiyi.com/bullet/'\              + tvID[-4:-2] + '/'\              + tvID[-2:] + '/'\              + tvID + '_300_'\              + str(page) + '.z'        print(url)        # 请求d幕压缩文件        res = requests.get(url).content        res_byte = bytearray(res)        try:            xml = zlib.decompress(res_byte).decode('utf-8')            # 保存路径            path = 'data/' + tvID + '_300_' + str(page) + '.xml'            with open(path, 'w', enCoding='utf-8') as f:                f.write(xml)        except:            return

文件存储到本地之后,我们先获取每一个文件的全路径名,实现代码如下所示:

 
def get_file(path):    for root, ds, fs in os.walk(path):        for f in fs:            yIEld root + '/' + f

获取到所有文件全路径名后,我们再根据全路径名获取文件并解析d幕文本信息,实现代码如下所示:

 
def get_bullet_text(f):    DOMTree = parse(f)    collection = DOMTree.documentElement    # 评论文本内容    xml_List = collection.getElementsByTagname('content')    content_List = []    for j in xml_List:        content_List.append(j.childNodes[0].data)    return content_List

最后,我们可以将整个d幕字符串信息保存起来,因为我本次爬取的d幕信息并不是特别多,所有就先存到 txt 文件中吧,实现代码如下所示:

 
def save2txt(content):    with open('bullet.txt', 'a', enCoding='utf-8') as file:        file.write(content)
词云展示

数据保存完了之后,我们再来个词云展示吧,代码实现如下所示:

 
def jIEba_():    content = open('bullet.txt', 'rb').read()    # jIEba 分词    word_List = jIEba.cut(content)    words = []    # 过滤掉的词    remove_words = ['还是', '不会', '一些', '所以', '果然',                    '起来', '东西', '为什么', '真的', '这么',                    '但是', '怎么', '还是', '时候', '一个',                    '什么', '自己', '一切', '样子', '一样',                    '没有', '不是', '一种', '这个', '为了']    for word in word_List:        if word not in remove_words:            words.append(word)    global word_cloud    # 用逗号隔开词语    word_cloud = ','.join(words)
def cloud(): # 打开词云背景图 cloud_mask = np.array(Image.open('bg.png')) # 定义词云的一些属性 wc = WordCloud( # 背景图分割颜色为白色 background_color='white', # 背景图样 mask=cloud_mask, # 显示最大词数 max_words=300, # 显示中文 Font_path='./Fonts/simhei.ttf', # 最大尺寸 max_Font_size=70 ) global word_cloud # 词云函数 x = wc.generate(word_cloud) # 生成词云图片 image = x.to_image() # 展示词云图片 image.show() # 保存词云图片 wc.to_file('mgqt.png')

看一下效果:

END

 

总结

以上是内存溢出为你收集整理的《民国奇探》的d幕有点逗比,用 Python 爬下来看看全部内容,希望文章能够帮你解决《民国奇探》的d幕有点逗比,用 Python 爬下来看看所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1158752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存