最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲實現(xiàn)vip電影下載的示例代碼

 更新時間:2020年04月20日 08:44:43   作者:阿君的貓  
這篇文章主要介紹了Python爬蟲實現(xiàn)vip電影下載的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

爬蟲目的

實現(xiàn)對各大視頻網(wǎng)站vip電影的下載,因為第三方解析網(wǎng)站并沒有提供下載的渠道,因此想要實現(xiàn)電影的下載。

實現(xiàn)思路

1.選擇一個合適的vip解析網(wǎng)站,這里選擇了無名小站的接口,因為嘗試了很多網(wǎng)站,有些網(wǎng)站想要爬取很困難,無名小站相對簡單,接口為www.wmxz.wang/video.php?url=[vip電影的鏈接]
2.利用Fiddler進行抓包,模擬瀏覽器發(fā)送post請求,獲取電影實際下載地址。
3.使用PyQt5進行包裝,實現(xiàn)多樣化的功能。(可選)

頁面分析

我使用Fiddler抓包,首先,瀏覽器進入接口,這里隨便加一個vip電影的鏈接,然后來看post請求:

我們已經(jīng)知道了提交post請求的url,箭頭所指的地方是提交的表單,里面的url就是我們要下載vip電影的ur,出現(xiàn)%3F這些是因為將url編碼為了ASCII碼,這里可能使用urllib對其進行解析,很簡單;vkey需要我們獲取,其實它就藏在Post請求之前get請求返回的頁面中,vkey是動態(tài)變化的,每一次都不一樣。紅線部分是服務器返回的信息,前幾天我爬取的時候里面的url還是電影的下載鏈接,現(xiàn)在變成了一個m3u8文件,里面的網(wǎng)址也是編碼后的,我們需要用urllib進行解碼,我們手動打開https://youku.cdn2-okzy.com/20200408/8808_23a9c669/index.m3u8看看里面的內容,下載后打開


發(fā)現(xiàn)里面并沒有我們想要的ts文件,但是在文件中有一行1000k/hls/index.m3u8,也是以m3u8為后綴的,使用前面的url與文件中的部分地址拼接,結果為: https://youku.cdn2-okzy.com/20200408/8808_23a9c669/1000k/hls/index.m3u8,再次用瀏覽器手動打開,下載內容后發(fā)現(xiàn)里面是一個個ts文件,最后將ts文件下載后拼接即可(因為我爬的時候還是電影鏈接,寫博客時發(fā)現(xiàn)改了,所以拼接方法我也不會,網(wǎng)上應該容易找到)。


下面我們只要獲取vkey就可以得到這些ts文件地址了,我們向前看,找返回內容有vkey的get請求:


對比發(fā)現(xiàn)和post請求中的vkey一樣,接下來就可以開始編寫代碼了。

代碼實現(xiàn)

獲取vkey,從上面的分析我們可以知道,get請求的網(wǎng)址為
https://www.administratorm.com/WANG.WANG/index.php?url=[要下載的vip電影]
我采用輸入鏈接的方式來拼接get請求要訪問的url,順便使用urllib庫將輸入鏈接編碼,方便后面的post請求使用

headers1 = {
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
      'Referer':'https://www.administratorm.com/index.php?url=https://v.qq.com/x/cover/mzc00200q06w7zx/j0033kbdjsv.html'
      }

headers2 = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
#定義接口鏈接
api_url = 'https://www.administratorm.com/WANG.WANG/Api.php'
input_url = input("請輸入電影url鏈接:")
print("請稍等!")
get_key_url = 'https://www.administratorm.com/WANG.WANG/index.php?url='+input_url
parsed_url = parse.quote(input_url,safe='')

這里創(chuàng)建一個會話,會話是用于服務器記錄用戶身份的,然后就是發(fā)送get請求,獲取網(wǎng)頁源碼,然后使用re匹配到vkey的內容,這里要注意的是get請求中的verify=False參數(shù),其實我也不太明白,是一些網(wǎng)站有SSl認證,加了這個參數(shù)就可以跳過認證,加了此參數(shù)可能會有很多警告,使用 logging.captureWarnings(True) 設置不顯示警告。

sess = requests.session()
vkey = get_key(sess,get_key_url)

def get_key(sess,get_key_url):
  logging.captureWarnings(True)
  response = sess.get(get_key_url,headers=headers1,verify=False)
  response.encoding=response.apparent_encoding
  content = response.text
  vkey = re.findall('vkey.*?\'(.*?)\'',content)[0]
  return vkey

2.制作表單,獲取了vkey后,我們就可以制作提交post請求的表單了,代碼很簡單,就不做介紹了。

datas = make_dataform(parsed_url,vkey)
def make_dataform(parsed_url,vkey):
  datas = {
      'url':parsed_url,
      'wap':'0',
      'ios':'0',
      'vkey':vkey,
      'type':''
  
    }
  return datas

3.發(fā)送post請求,這里再次說明,由于我原來post請求返回的信息是電影下載地址,所以我獲得的url是下載地址,現(xiàn)在再提交post請求獲得的是m3u8文件。

download_url = post(sess,datas)
def post(sess,datas):
  response = sess.post(api_url,headers=headers2,data=datas)
  response.encoding=response.apparent_encoding
  u = json.loads(response.text)
  return u['url']

4.下載電影,由于鏈接不同,我就把我下載電影的代碼放到這里,做個參考。

down_load(sess,download_url)
def down_load(sess,download_url):
  print("正在準備下載電影")
  response = requests.get(download_url,headers=headers2,verify=False)
  total_size = response.headers['Content-Length']
  print("將要下載的電影大小:{}MB".format(round(int(total_size)/1024/1024,2)))
  batch_size = int(total_size)//100
  #返回迭代器:是將二進制流按大小分割之后的
  k = input("請輸入文件路徑(C/D):")
  filename = input("請輸入保存文件名:")
  with open(r"{}:/電影/".format(k)+filename+".mp4",'wb') as f:
    i = 0
    for content in response.iter_content(chunk_size=batch_size):
      f.write(content)
      print('\r','#'*i+' 已下載{}%'.format(i),end='\r',flush=True)
      i += 1
    print("下載成功")

程序界面

使用PyQt5將上面的代碼包裝起來,使其更加美觀,并添加一些功能,由于WebEngineView已經(jīng)不能播放flash了,并且有些需要新建標簽的鏈接打不開,所以中間的瀏覽器很雞肋,就圖個好看吧。


這里就不詳細講了,PyQt5也比較簡單,容易上手,如果需要的話聯(lián)系我吧。

總結

這是我第一次寫博客,如果哪里有問題請及時指出來,歡迎大家指正錯誤,此爬蟲項目只用于入門,請不要用其盈利。否則,后果自負!

到此這篇關于Python爬蟲實現(xiàn)vip電影下載的示例代碼的文章就介紹到這了,更多相關Python爬蟲vip電影下載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Protocol Buffers(Protobuf)功能及使用方法

    Protocol Buffers(Protobuf)功能及使用方法

    本文介紹了ProtocolBuffers(Protobuf)及其編譯器protoc,包括其數(shù)據(jù)描述語言的特性、編譯器的功能、.proto文件的定義、使用方法、支持的編程語言、安裝步驟、常用命令選項以及高級功能,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Python中的pprint模塊

    Python中的pprint模塊

    本文介紹了 Python中的pprint模塊,pprint模塊包含一個“美觀打印機”,用于生成數(shù)據(jù)結構的一個美觀的視圖。格式化工具會生成數(shù)據(jù)結構的一些表示,不僅能夠由解釋器正確地解析,還便于人閱讀。輸出會盡可能放在一行上,分解為多行時會縮進,想了解具體內容請參考下文
    2021-11-11
  • Pycharm使用CV2的詳細圖文教程

    Pycharm使用CV2的詳細圖文教程

    在Windows操作系統(tǒng)下安裝Python3和OpenCV庫后,通過安裝并配置PyCharm開發(fā)環(huán)境,可以直接顯示并調用已安裝的包,例如使用cv2庫的接口進行編程和項目開發(fā),文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Python使用BeautifulSoup庫解析HTML基本使用教程

    Python使用BeautifulSoup庫解析HTML基本使用教程

    這篇文章主要介紹了Python使用BeautifulSoup庫解析HTML基本使用教程,文中主要對其適合于制作爬蟲方面的特性進行了解析,需要的朋友可以參考下
    2016-03-03
  • 使用Python實現(xiàn)數(shù)據(jù)重采樣的示例代碼

    使用Python實現(xiàn)數(shù)據(jù)重采樣的示例代碼

    數(shù)據(jù)重采樣是一種用于調整數(shù)據(jù)集大小或分布的技術,它涉及通過增加或減少數(shù)據(jù)點的數(shù)量來修改現(xiàn)有數(shù)據(jù)集,下面我們就來學習一下如何利用Python實現(xiàn)數(shù)據(jù)重采樣吧
    2023-11-11
  • python爬取個性簽名的方法

    python爬取個性簽名的方法

    這篇文章主要為大家詳細介紹了python爬取個性簽名的方法,具有一定的參考價值,感興趣的朋友可以參考一下
    2018-06-06
  • 如何在Anaconda中打開python自帶idle

    如何在Anaconda中打開python自帶idle

    這篇文章主要介紹了如何在Anaconda中打開python自帶idle,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • python導出mysql指定binlog文件實現(xiàn)demo

    python導出mysql指定binlog文件實現(xiàn)demo

    這篇文章主要介紹了python導出mysql指定binlog文件實現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Python的Django框架中的URL配置與松耦合

    Python的Django框架中的URL配置與松耦合

    這篇文章主要介紹了Python的Django框架中的URL配置與松耦合,文中簡單講解了這一松耦合原則,需要的朋友可以參考下
    2015-07-07
  • python裝飾器實現(xiàn)對異常代碼出現(xiàn)進行自動監(jiān)控的實現(xiàn)方法

    python裝飾器實現(xiàn)對異常代碼出現(xiàn)進行自動監(jiān)控的實現(xiàn)方法

    這篇文章主要介紹了python裝飾器實現(xiàn)對異常代碼出現(xiàn)進行自動監(jiān)控的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論

班玛县| 巨野县| 依兰县| 信丰县| 无棣县| 吉安县| 台南县| 普定县| 永顺县| 巴林右旗| 文登市| 虞城县| 蛟河市| 华阴市| 万盛区| 南京市| 富宁县| 巴彦淖尔市| 延川县| 湘乡市| 宝兴县| 新巴尔虎左旗| 绥宁县| 阜宁县| 浏阳市| 保康县| 漳州市| 大英县| 隆尧县| 兰坪| 南昌市| 延安市| 工布江达县| 洛川县| 望奎县| 五原县| 邢台县| 通海县| 平定县| 铜鼓县| 慈溪市|