最近被室友安利熱血動漫番《終末的女武神》和《拳願阿修羅》,太上頭了周末休息熬夜看完了。不過資源不太好找,辣條一怒爬取了資源,這下可以看個够了。室友崇拜連連,想起了我的班花,快點開學啊,阿西吧...

Python爬蟲-vip動漫采集

效果展示

爬取目標

網站目標:櫻花動漫

工具使用

開發工具:pycharm

開發環境:python3.7, Windows10

使用工具包:requests,lxml, re,tqdm

重點學習內容

正則的使用 tqdm的使用 各種音頻數據的處理

項目思路解析

搜索你需要的動漫數據,根據自己需要的視頻不同解析視頻的方法也是不一樣的(會挑選兩種視頻進行解析)

在當前頁面需要提取出對應的章節信息,獲取到章節信息的a標簽的跳轉內容,提取出每個章節的名字,提取章節的方法我使用的xpath的方法(各比特大佬可自行嘗試其他的方法)

headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36',
   'Referer': 'http://www.imomoe.la/search.asp'
}

url = 'http://www.imomoe.la/view/8024.html'
response = requests.get(url, headers=headers)
# print(response.content.decode('gbk'))
html_data = etree.HTML(response.content.decode('gbk'))
chapter_list = html_data.xpath('//div[@class="movurl"]/ul/li/a/text()')
chapter_url_list = html_data.xpath('//div[@class="movurl"]/ul/li/a/@href')[0]

url的數據需要自行拼接,根據新的url獲取詳情頁面的數據

按照正常思路首先應該查看播放地址是否為靜態數據

明顯看出數據並不是靜態數據,在區分是否為動態數據,通過抓包工具進行獲取。

也並不是動態數據,媒體數據也不知道怎麼形成的。

從頭在來從前端頁面在進行解析,找視頻頁面的事件。

並沒有發現有效數據,但是在iframe下面的Script標簽有js跳轉地址 ,解析的數據網址和視頻的播放地址是一樣的域名, 點擊查看, 這不是就是我們找的視頻播放地址嘛 ,終於找到了,開始實現 在當前頁面通過xpath方式提取出script裏的js跳轉地址, 拼接出新的視頻鏈接播放地址,發送請求,通過正則錶達式提取出所有MP4播放地址。

new_url = 'http://www.imomoe.la' + chapter_url_list
response = requests.get(new_url, headers=headers)
html = etree.HTML(response.content.decode('gbk'))

data_url = 'http://www.imomoe.la' + html.xpath('//div[@class="player"]/script[1]/@src')[0]
res = requests.get(data_url, headers=headers).text
# print(res)
play_url_list = re.findall('\$(.*?)\$flv', res)
print(play_url_list)

保存對視頻數據發送請求,保存數據到mp4 ,通過tqdm工具能查看對應下載的速度以及下載的進度

for chapter, play_url in tqdm(zip(chapter_list, play_url_list)):
  result = requests.get(play_url, headers=headers).content
  f = open('終末的女武神/' + chapter + '.mp4', "wb")
  f.write(result)

​到這大功告成 但是當我把網址修改成鬥破蒼穹這個動漫時,卻返回的數據為空 

這個視頻的加載數據的規則是不一樣的加載的數據為m3u8的格式, 其他的音頻的數據加載可能也不一樣, 處理m3u8的數據稍稍的有丟丟複雜,它的m3u8的文件內部有嵌套了m3u8鏈接地址, 需要轉換對應的數據接口,進行鏈接地址拼接, 取出ts文件進行下載,拼接成視頻。

m3u8_url_list = re.findall('\$(.*?)\$bdhd', res)
for m3u8_url, chapter in zip(m3u8_url_list, chapter_list):
   data = requests.get(m3u8_url, headers=headers)
   # print(data.text)
   new_m3u8_url = 'https://cdn.605-zy.com/' + re.findall('/(.*?m3u8)', data.text)[0]
   # print(new_m3u8_url)
   ts_data = requests.get(new_m3u8_url, headers=headers)
   ts_url_list = re.findall('/(.*?ts)', ts_data.text)
   print("正在下載:", chapter)
   for ts_url in tqdm(ts_url_list):
       result = requests.get('https://cdn.605-zy.com/' + ts_url).content
       f = open('鬥破蒼穹/' + chapter + '.mp4', "ab")
       f.write(result)

項目思路總結

  • 獲取到想要動漫的地址

  • 提取詳情頁面的名字已經跳轉地址

  • 獲取頁面的靜態js文件

  • 解析視頻播放地址或者m3u8文件

  • 保存對應數據

簡易源碼分享

import requests
from lxml import etree
import re
from tqdm import tqdm


headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36',
   'Referer': 'http://www.imomoe.la/search.asp'
}

url = 'http://www.imomoe.la/view/8024.html'
response = requests.get(url, headers=headers)
# print(response.content.decode('gbk'))
html_data = etree.HTML(response.content.decode('gbk'))
chapter_list = html_data.xpath('//div[@class="movurl"]/ul/li/a/text()')
chapter_url_list = html_data.xpath('//div[@class="movurl"]/ul/li/a/@href')[0]
# print(chapter_list)
# print(chapter_url_list)
new_url = 'http://www.imomoe.la' + chapter_url_list
response = requests.get(new_url, headers=headers)
html = etree.HTML(response.content.decode('gbk'))

data_url = 'http://www.imomoe.la' + html.xpath('//div[@class="player"]/script[1]/@src')[0]
res = requests.get(data_url, headers=headers).text
# print(res)
play_url_list = re.findall('\$(.*?)\$flv', res)
print(play_url_list)

for chapter, play_url in tqdm(zip(chapter_list, play_url_list)):
   result = requests.get(play_url, headers=headers).content
   f = open('終末的女武神/' + chapter + '.mp4', "wb")
   f.write(result)




發現不會的或者學習Python的,可以直接評論留言或者私我【非常感謝你的點贊、收藏、關注、評論,一鍵四連支持】

熱血動漫番太好看了!用Python爬取了1T的動漫,內存都爆了的更多相關文章

  1. 這届網友實在是太有才了!用python爬取15萬條《我是餘歡水》彈幕

    年初時我們用數據解讀了幾部熱度高,但評分差强人意的國產劇,而最近正午陽光帶著兩部新劇來了,<我是餘歡水>和<清平樂>,截止到目前為止,這兩部劇在豆瓣分別為7.5分和7.9分,算 ...

  2. Python爬取十四萬條書籍信息告訴你哪本網絡小說更好看

    前言 本文的文字及圖片來源於網絡,僅供學習.交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理. 作者: TM0831 PS:如有需要Python學習資料的小夥伴可以加點擊 ...

  3. python爬蟲09 | 上來,自己動 !這就是 selenium 的牛逼之處

    作為一個男人 在最高光的時刻 就是說出那句 之後 還不會被人打 ... 雖然在現實生活中你無法這樣 但是在這裏 就讓你體驗一番 那種呼風喚雨的感覺 我們之前在爬取某些網站的時候 使用到了一些 pyth ...

  4. python爬蟲13 | 秒爬,這多線程爬取速度也太猛了,這次就是要讓你的爬蟲效率杠杠的

    快 快了 啊 嘿 小老弟 想啥呢 今天這篇爬蟲教程的主題就是一個字 快 想要做到秒爬 就需要知道 什麼是多進程 什麼是多線程 什麼是協程(微線程) 你先去沏杯茶 坐下來 小帥b這就好好給你說道說道 關 ...

  5. 他爬取了B站所有番劇信息,發現了這些……

    本文來自「樓+ 之數據分析與挖掘實戰 」第 4 期學員 -- Yueyec 的作業.他爬取了B站上所有的番劇信息,發現了很多有趣的數據- 關鍵信息:最高播放量 / 最强up主 / 用戶追番數據 / 雲 ...

  6. python3爬蟲 爬取動漫視頻

    起因 因為本人家裏有時候網速不行,所以看動漫的時候播放器總是一卡一卡的,看的太難受了.閑暇無聊又F12看看.但是動漫網站卻無法打開控制臺.這就勾起了我的興趣.正好反正無事,去尋找下視頻源. 但是這裏事 ...

  7. Requests庫入門——應用實例-網絡圖片的爬取與保存(好看的小姐姐≧▽≦)

    在B站學習這一節的時候,彈幕最為激烈,不管大家是出於什麼目的都想體驗一下網絡爬蟲爬取圖片的魅力,畢竟之前的實例實話說都是一些沒有太大作用的信息. 好了,直接上代碼: import requests i ...

  8. Ajax介紹及爬取嗶哩嗶哩番劇索引追番人數排行

    Ajax,是利用JavaScript在保證頁面不被刷新,頁面鏈接不改變的情况下與服務器交換數據並更新部分網頁的技術.簡單的說,Ajax使得網頁無需刷新即可更新其內容.舉個例子,我們用瀏覽器打開新浪微博 ...

  9. 爬蟲練習四:爬取b站番劇字幕

    由於個人經常在空閑時間在b站看些小視頻歡樂一下,這次就想到了爬取b站視頻的彈幕. 這裏就以番劇<我的妹妹不可能那麼可愛>第一季為例,抓取這一番劇每一話對應的彈幕. 1. 分析頁面 這部番劇 ...

  10. python網絡爬蟲之解析網頁的正則錶達式(爬取4k動漫圖片)[三]

    前言 hello,大家好 本章可是一個重中之重,因為我們今天是要爬取一個圖片而不是一個網頁或是一個json 所以我們也就不用用到selenium模塊了,當然有興趣的同學也一樣可以使用selenium去 ...

隨機推薦

  1. Struts2數據校驗

    Struts2數據校驗 1.常見數據校驗方法 錶單數據的校驗方式: 錶單中的數據必須被效驗以後才能够被使用,常用的效驗方式分為兩種: 前臺校驗:也稱之為客戶端效驗,主要是通過JS編程的方式進行錶單數據 ...

  2. Java三大框架之——Hibernate關聯映射與級聯操作

    什麼是Hibernate中的關聯映射? 簡單來說Hibernate是ORM映射的持久層框架,全稱是(Object Relational Mapping),即對象關系映射. 它將數據庫中的錶映射成對應的 ...

  3. 關於SharePoint 2013 UserProfile跨場的幾點注意

    1.跨場中需要以下幾個Service實例,沒有這幾個會遇到各種問題 2.發布場和消費場同時需要創建Host站點,否則消費場的SiteFeed無法使用. 3.跨場關注的問題請參考:http://www. ...

  4. linux C高手成長過程---書籍推薦

    建議學習路徑: 首先先學學編輯器,vim, emacs什麼的都行. 然後學make file文件,只要知道一點就行,這樣就可以准備編程序了. 然後看看<C程序設計語言>K&R,這樣 ...

  5. Android AsyncTask 异步任務操作

    1:activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  6. Thread.join()分析方法

    API: join public final void join() throws InterruptedException 等待該線程終止. 拋出: InterruptedException - 假 ...

  7. Mac OSX操作系統安裝和配置Zend Server 6教程(3)

    Zend Server安裝好以後,在php.ini文件中,沒有默認時區.就是導致很多警告信息出現的根本. 接下來,我們看看如果修改這個文件. 首先,進入php.ini文件.此文件在目錄zend/etc ...

  8. Oracle DML容錯處理(1)

    Oracle dml操作過程中可能出現鍵重複或者數據類型不一致等問題,一般進行數據處理時候需要對這些可能出現的錯誤提前考慮,避免更新失敗.Oralce給出了一些其他解决方案,以在不同場景下使用. 1. ...

  9. 使用python讀取word,寫入execl

    word裏面有2張錶,需要找到第二張錶,並寫入execl中: 代碼如下: #coding:utf-8 import os from docx import Document import win32c ...

  10. Cocos2dx 代碼中包含中文導致編譯錯誤的問題解决方法

    從網上下載一個cocos2dx的源碼,是IOS版本的,我將其遷移到windows 7下 ,用VS2010編譯,出現一堆的C2001錯誤: 1>d:\cocos2d-x-2.2.6\mygame\ ...