Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作
爬蟲背景
原計劃繼續寫一下關於手機APP的爬蟲,結果發現夜神模擬器總是卡死,比較懶,不想找原因了,哈哈,所以接著寫後面的部落格了,從50篇開始要寫幾篇python爬蟲的騷操作,也就是用Python3通過爬蟲實現一些小工具。
Python3 VIP視訊下載器
這種軟體或者網站滿天都是了,就是線上觀看收費網站的VIP視訊,你只要會玩搜尋引擎或者是一個程式設計師基本都知道,雖說一直在被封殺,但是能賺錢的地方就一定有人鑽漏洞。今天要實現的就是通過別人的API在Python中下載ts視訊到本地,自己去百度一下TS視訊是什麼吧。
找相關的介面
我隨便搜尋了一下,那是非常多的,版權問題,就不放相關的地址了,當然在程式碼中還是會出現一下的。
我找到這個介面應該是目前相對比較穩定的,並且還在更新的
我看了一下,他中間主要通過三個API整體實現的頁面邏輯
首先你先去優酷啊,騰訊啊,愛奇藝啊找個VIP視訊的地址,這個隨意啦
我找了一個《葉問外傳》
http://v.youku.com/v_show/id_XNDA0MDg2NzU0OA==.html?spm=a2h03.8164468.2069780.5
編寫程式碼幾個步驟
在瀏覽器測試播放地址,得到線路播放資料
http://y.mt2t.com/lines?url=https://v.qq.com/x/cover/5a3aweewodeclku/b0024j13g3b.html
在頁面的原始碼中,請注意,開啟開發者工具直接按快捷鍵F12
即可,右鍵已經被鎖定。
在原始碼中,發現真實的呼叫地址
所以,你需要先匹配出來key來,非常簡單,使用正規表示式即可
import requests
import re
class VIP(object):
def __init__(self):
self.api = "http://y.mt2t.com/lines?url="
self.url = "http://v.youku.com/v_show/id_XNDA0MDg2NzU0OA==.html?spm=a2h03.8164468.2069780.5"
def run(self):
res = requests.get(self.api+self.url)
html = res.text
key = re.search(r'key:"(.*?)"',html).group(1)
print(key)
if __name__ == '__main__':
vip = VIP()
vip.run()
得到key之後,就可以進行獲取播放地址了,經過分析也可以知道介面為
Request URL: http://y.mt2t.com/lines/getdata
Request Method: POST
那麼只需要編寫一下即可
import requests
import re
import json
class VIP(object):
def __init__(self):
self.api = "http://y.mt2t.com/lines?url="
self.post_url = "http://y.mt2t.com/lines/getdata"
self.url = "http://v.youku.com/v_show/id_XNDA0MDg2NzU0OA==.html?spm=a2h03.8164468.2069780.5"
def run(self):
res = requests.get(self.api+self.url)
html = res.text
key = re.search(r'key:"(.*?)"',html).group(1)
return key
def get_playlist(self):
key = self.run()
data = {
"url":self.url,
"key":key
}
html = requests.post(self.post_url,data=data).text
dic = json.loads(html)
print(dic)
if __name__ == '__main__':
vip = VIP()
vip.get_playlist()
上面的程式碼可以得到如下的資料集
這個資料集需要解析一下,用來獲取播放地址,請注意還有一個介面我們需要打通
Request URL: http://y2.mt2t.com:91/ifr/api
Request Method: POST
引數如下
url: +bvqT10xBsjrQlCXafOom96K2rGhgnQ1CJuc5clt8KDHnjH75Q6BhQ4Vnv7gUk+SpJYws4A93QjxcuTflk7RojJt0PiXpBkTAdXtRa6+LAY=
type: m3u8
from: mt2t.com
device:
up: 0
這個API的所有引數都是從剛才獲得的資料集分解出來的
提取上面結果集中的URL
http://y2.mt2t.com:91/ifr?url=%2bbvqT10xBsjrQlCXafOom96K2rGhgnQ1CJuc5clt8KDHnjH75Q6BhQ4Vnv7gUk%2bSpJYws4A93QjxcuTflk7RojJt0PiXpBkTAdXtRa6%2bLAY%3d&type=m3u8
對這個URL進行分解,這個地方你需要了解一般情況下URL進行哪些符號的特殊編碼
大小寫都有可能
符號 | 特殊編碼 |
---|---|
+ | %2d |
/ | %2f |
% | %25 |
= | %3d |
? | %3F |
# | %23 |
& | %26 |
所以編寫的程式碼如下
def url_spilt(self):
url = "http://y2.mt2t.com:91/ifr?url=%2bbvqT10xBsjrQlCXafOom96K2rGhgnQ1CJuc5clt8KDHnjH75Q6BhQ4Vnv7gUk%2bSpJYws4A93QjxcuTflk7RojJt0PiXpBkTAdXtRa6%2bLAY%3d&type=m3u8"
url = url.split("?url=")[1].split("&")[0].replace("%2b","+").replace("%3d","=").replace("%2f","/")
print(url)
接下來獲取type
這個比較容易
只需要判斷以下type=
是否在字串中然後擷取即可。
url擷取的程式碼如下
def url_spilt(self,url):
#url = "http://y2.mt2t.com:91/ifr?url=%2bbvqT10xBsjrQlCXafOom96K2rGhgnQ1CJuc5clt8KDHnjH75Q6BhQ4Vnv7gUk%2bSpJYws4A93QjxcuTflk7RojJt0PiXpBkTAdXtRa6%2bLAY%3d&type=m3u8"
url_param = url.split("?url=")[1].split("&")[0].replace("%2b","+").replace("%3d","=").replace("%2f","/")
if "type=" in url:
type = url.split("type=")[1]
else:
type = ""
return url_param,type
完善get_playlist函式,最終的程式碼如下
def get_playlist(self):
key = self.run()
data = {
"url":self.url,
"key":key
}
html = requests.post(self.post_url,data=data).text
dic = json.loads(html)
for item in dic:
url_param, type = self.url_spilt(item["Url"])
res = requests.post(self.get_videourl,data={
"url":url_param,
"type":type,
"from": "mt2t.com",
"device":"",
"up":"0"
})
play = json.loads(res.text)
print(play)
執行之後得到下面的提示,其中最重要的m3u8已經成果獲取到,完成任務
相關文章
- python3 爬蟲入門Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python愛奇藝VIP視訊爬蟲爬取下載Python爬蟲
- Python3爬蟲入門(一)Python爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- Python爬蟲入門Python爬蟲
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Python爬蟲入門學習線路圖2019最新版(附Python爬蟲視訊教程)Python爬蟲
- Python3 爬蟲快速入門攻略Python爬蟲
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- python-爬蟲入門Python爬蟲
- Python爬蟲入門,8個常用爬蟲技巧盤點Python爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- Python爬蟲入門教程 53-100 Python3爬蟲獲取三亞天氣做旅遊參照Python爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- Python爬蟲入門教程 2-100 妹子圖網站爬取Python爬蟲網站
- python 爬蟲Python爬蟲
- python爬蟲Python爬蟲
- Python爬蟲入門【11】:半次元COS圖爬取Python爬蟲
- Python爬蟲入門【3】:美空網資料爬取Python爬蟲
- Python爬蟲入門教程導航帖Python爬蟲
- Python爬蟲教程-34-分散式爬蟲介紹Python爬蟲分散式
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- python3 爬蟲實戰:為爬蟲新增 GUI 影象介面Python爬蟲GUI
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- 爬蟲入門基礎-Python爬蟲Python
- Python爬蟲教程-13-爬蟲使用cookie爬取登入後的頁面(人人網)(下)Python爬蟲Cookie
- Python爬蟲教程-12-爬蟲使用cookie爬取登入後的頁面(人人網)(上)Python爬蟲Cookie
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲