zoukankan      html  css  js  c++  java
  • python爬虫实战之bilibili弹幕生成云图

    突然想到了这个题目,先开了题,看能不能一次搞定,#后记,花了两天时间搞定的,一直想用自己的方法爬,但是效果都不好

    首先去分析一下bilibili的网站请求,但是弹幕的异步传输的包抓不到(或者隐藏的好,或者是我技术水平有限),然后网上比较一致的看法是在JS里暴露了一个弹幕xml文件的id,然后用一个新的请求把xml文件下载下来,然后分析。

    大体思路是:用avid去拿到cid,cid获取到弹幕文件,解析弹幕文件,生成云图

     搞了两天,先把代码扔上来

    from selenium import webdriver
    from bs4 import BeautifulSoup
    import re
    from wordcloud import WordCloud
    from scipy.misc import imread
    import matplotlib.pyplot as plt
    
    driver=webdriver.PhantomJS()
    driver.get('http://www.bilibili.com/video/av15719999/')  #用的是selenium和webdriver,试过用requests库的get方法,不成功
    soup = BeautifulSoup(driver.page_source,'lxml')          #把返回的html解析出来
    
    sc = soup.find('script',text=re.compile("EmbedPlayer*"))#找到有特定词‘EmbedPlayer’的script标签
    sc1 =str(sc)  #截取cid的值
    a = sc1.find('cid=');  
    b = sc1.find('&');
    sc2=sc1[a+4:b]
    # print(sc2)
    driver.get(
    "http://comment.bilibili.com/"+sc2+".xml") #这个是重点,通过刚才拿到的cid去把弹幕的xml文件拿下来 soupxml = BeautifulSoup(driver.page_source,'lxml') ds =soupxml.find_all('d')#拿到所有的弹幕节点 cuttext ='' for d in ds: cuttext = cuttext+' '+str(d.text);#使用一个字符串把文件串起来 #print(cuttext)
    #初始化词云 color_mask = imread("425176.jpg") # 读取背景图片 cloud = WordCloud( # 设置字体,不指定就会出现乱码,这个文件是字体文件,可以去网上下载一个,然后写上路径 font_path="SourceHanSerif-Heavy.ttc", # 设置背景色 background_color='white', # 词云形状,就是刚才读取的背景图片 mask=color_mask, # 允许最大词汇,出os报错的时候可能就是这个设置过大了 max_words=100, # 最大号字体,出os报错的时候可能就是这个设置过大了 # max_font_size=40 ) word_cloud = cloud.generate_from_text(cuttext) # 产生词云 word_cloud.to_file("3.png") # 保存图片 # 显示词云图片 plt.imshow(word_cloud) plt.axis('off') plt.show()

    不嫌弃的话可以访问我的个人主页,已经把功能集成到上边去了。在Funs功能列表中

    http://1163949417-jack.55555.io/west/main/

  • 相关阅读:
    tomcat项目部署后,无法弹出浏览器窗口,IDEA控制台如何快速找到错误日志
    导入新的jar包后,提示ClassNotFoundException 怎么解决?
    Vue is not defined
    next(),nextLine(),nextInt的区别
    Properties类与流的相关方法,properties的键与值都应该是字符串
    Java并发编程从入门到精通
    Java并发编程从入门到精通
    Java并发编程从入门到精通
    Java并发编程从入门到精通
    Java并发编程从入门到精通
  • 原文地址:https://www.cnblogs.com/Jacck/p/7751721.html
Copyright © 2011-2022 走看看