python爬虫類の実戦的なbilibili弾幕は雲図を生成します.
6135 ワード
突然このテーマを思い付いて、先に問題をつけて、一回で解決することができるかどうかを見て、〓後記、2日間を使って解決して、ずっと自分の方法で登りたいですが、効果はすべてよくありません.
まず、bilibiliのウェブサイトの要求を分析してみます.しかし、弾幕の非同期転送のカバンが掴めない(または隠したほうがいいです.あるいは技術レベルが限られています.).そして、オンラインで比較的に一致するのはJSで弾幕xmlファイルのidを暴露した後、新しいのを使ってxmlファイルをダウンロードして分析してください.
大体の構想はavidでcidを持ってきて、cidは弾幕ファイルを獲得して、弾幕ファイルを解析して、雲図を生成します.
二日間やって、まずコードを上げます.
嫌でなければ、私のホームページにアクセスして、機能を上に集めました.Funs機能リストで
http://1163949417-jack.55555.io/west/main/
転載先:https://www.cnblogs.com/Jacck/p/7751721.html
まず、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/
転載先:https://www.cnblogs.com/Jacck/p/7751721.html