周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

犯我周某人者,有車無瓶

“打工是不可能打工的,這輩子都不可能打工的!”不知道還有多少人記得當年的廣西南寧小夥竊車犯“周某人”,那時候“精神小夥”一詞還沒有流行起來,因為外形像極了古巴革命領導人和驚人的言論被戲謔為“竊格瓦拉”的周某人,可以說是不少人的“精神領袖”了。

當然向任何人學習都要有取捨,取其精華去其糟粕,周某人執著的精神和想單幹的動力還是不錯的,

今天我們就來分享一下,如何用python的爬蟲來進行抓取,方便看視頻,最後有福利

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

問題描述

python是一種非常好用的爬蟲工具。對於大多數的爬蟲小白來說,python是更加簡潔,高效的代碼。今天就用實際案例講解如何爬取動態的網站視頻。

環境配置:python3:爬蟲庫request、json模塊,Pycharm

爬蟲的一般思路:分析目標網頁,確定url—發送請求,獲取響應—解析數據—保存數據

爬取目標:方便看視頻

解決方案

第一步:分析網頁類型,獲取爬蟲參數

分析網頁:通過查看網頁源代碼搜索當前網頁的一段文字發現為空,說明網頁為動態的網頁。

獲取參數:通過谷歌審查元素依次點擊Network,XHR,Headers,找到需要的三個個頭部信息use-agent,cookie,url以及headers參數。

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


第二步:模擬瀏覽器發送請求,獲取響應數據

利用requests的get()向服務器發送請求


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

第三步:解析數據--json模塊:把json字符串轉換為python可交互的數據類型

轉換數據:利用json進行轉換,json是python的內置模塊,json可以把json字符串轉換為python可交互的數據類型。

獲取數據:通過觀察,title是視頻名,url是視頻地址,提取這兩個數據,並再次訪問獲得的url,得到視頻數據。


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


第四步:保存數據,保存在目標文件夾中

創建文件夾,寫入獲取的視頻數據。

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

完整代碼如下

import requests import json url = 'https://haokan.baidu.com/videoui/api/videorec?tab=gaoxiao&act=pcFeed&pd=pc&num=20&shuaxin_id=1584866887932' headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36', 'cookie': 'BAIDUID = 74DF3564617B2C9FA9D0468C96EA2D5B: FG = 1;BIDUPSID = 74DF3564617B2C9FA9D0468C96EA2D5B;PSTM = 1575894957;BDRCVFR[TfzreFuSob] = mk3SLVN4HKm;delPer = 0;PSINO = 6;H_PS_PSSID =;BDORZ = FFFB88E999055A3F8A630C64834BD6D0;BDSFRCVID = OV8sJeCCxG3HHcRuJgPnSaVvNIfB4Z1 - g_EP3J;H_BDCLCKID_SF = tR333R7oKRu_HRjYbb__ - P4DHUjHfRO2X5REVh7CfPOkeqOJ2Mt5yMkS0loZKhOXLK6pLqrY5q_MoCDzbpnp05tpexbH55uetn - f_U5;PC_TAB_LOG = haokan_website_page;Hm_lvt_4aadd610dfd2f5972f1efee2653a2bc5 = 1584866867;Hm_lpvt_4aadd610dfd2f5972f1efee2653a2bc5 = 1584866869;reptileData = % 7B % 22data % 22 % 3A % 2242da399b6855dc02a8c72001523e8685c0ec37b2f26178d68783bd941cca8e26e937dbe59953fb090211f372d6eb955dc20beb8396b045e5df4d725d5fedac7aaa415293534710428b39a3ce5851c795051c61beacdb88b1de6226323caf92f6a0c55a67f60dc0e50896f95dc05d54fa4803a75c5e3ba3751015d7b13e253544 % 22 % 2C % 22key_id % 22 % 3A % 2230 % 22 % 2C % 22sign % 22 % 3A % 22fd3d5c98 % 22 % 7D '} respons = requests.get(url,headers = headers) text = respons.text #print(respons.text) data = json.loads(text)#字典 #print(data) list1=data['data']['response']['videos'] #print(list1) for id in list1: print(id) video_title = id['title'] video_url = id['play_url'] print(video_title,video_url) print('下載') video_data = requests.get(video_url,headers = headers).content with open('video\\\\' + video_title,'wb') as f: f.write(video_data) print('完成')

結語

動態網頁的爬取與靜態網頁的爬取是非常相似的,其中一個差異是不能直接確定url,而需從頭部信息中去獲取。本次案例中的網站,可以直接看到頭部信息,但很多的視頻網站的頭部信息是無法查看的。需要其他一些手段。最後提醒大家爬蟲程序規避網站經營者設置的反爬蟲措施或者破解服務器防抓取措施,非法獲取相關信息,情節嚴重的,有可能構成“非法獲取計算機信息系統數據罪”。


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!

2020年最新人工智能python教程和電子書

如果你看好人工智能產業,處於想學python或者找不到合適的入門教程,那麼趕快來領取吧

獲取方式:

1.轉發此文+關注

2.私信小編關鍵詞 “ 資料 ”,即可免費獲取哦!

還不會私信的小夥伴,可以按照以下步驟操作:

1、打開頭條,點擊右下角“我的”

2、在個人界面點擊“關注”,當然這需要你先關注小編

3、在關注中找到小編,點擊小編的頭像進入他的個人界面,隨後點擊“私信” 

4、隨後進入私信發送界面,這樣就可以愉快的私信聊天了;

周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


周某人向Python出手了?跟我混讓天下沒有爬不了的視頻!


分享到:


相關文章: