前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
以下文章來源于菜鳥學Python資料分析,作者J哥
1.網頁分析
本文以爬取《樂隊的夏天第2季》第13期上視頻彈幕為例,首先通過以下步驟找到存放彈幕的真實url,
分析彈幕真實url,我們發現,引數5981449914376200是視頻tvid,引數62是tvid倒數4為的前兩位,引數00是tvid的最后兩位,.z前的引數1為視頻總時長除以300秒向上取整,觀察相鄰兩個彈幕檔案包,可以看出愛奇藝每5分鐘更新一次彈幕檔案,
由于直接爬取出來的彈幕檔案存在亂碼,需要進行二進制編碼,方可得到最終的彈幕資料,
2.爬蟲實戰
import zlib import requests # 1.爬取xml檔案 def download_xml(url): bulletold = requests.get(url).content # 二進制內容 return zipdecode(bulletold) def zipdecode(bulletold): '對zip壓縮的二進制內容解碼成文本' decode = zlib.decompress(bytearray(bulletold), 15 + 32).decode('utf-8') return decode for x in range(1,12): # x是從1到12,12怎么來的,這一集總共57分鐘,愛奇藝每5分鐘會加載新的彈幕,57除以5向上取整 url = 'https://cmts.iqiyi.com/bullet/62/00/5981449914376200_300_' + str(x) + '.z' xml = download_xml(url) # 把編碼好的檔案分別寫入17個xml檔案中(類似于txt檔案),方便后邊取資料 with open('./aiqiyi/iqiyi' + str(x) + '.xml', 'a+', encoding='utf-8') as f: f.write(xml) # 2.讀取xml檔案中的彈幕資料資料 from xml.dom.minidom import parse import xml.dom.minidom def xml_parse(file_name): DOMTree = xml.dom.minidom.parse(file_name) collection = DOMTree.documentElement # 在集合中獲取所有entry資料 entrys = collection.getElementsByTagName("entry") print(entrys) result = [] for entry in entrys: content = entry.getElementsByTagName('content')[0] print(content.childNodes[0].data) i = content.childNodes[0].data result.append(i) return result with open("aiyiqi_danmu.txt", mode="w", encoding="utf-8") as f: for x in range(1,12): l = xml_parse("./aiqiyi/iqiyi" + str(x) + ".xml") for line in l: f.write(line) f.write("\n"
3.資料預覽
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/192027.html
標籤:其他
上一篇:SpringBoot專案中,如何更規范的使用PageHelper分頁?
下一篇:QOS(一)服務模型
