大家好,我是辣条。

最近被室友安利热血动漫番《终末的女武神》和《拳愿阿修罗》,太上头了周末休息熬夜看完了。不过资源不太好找,辣条一怒爬取了资源,这下可以看个够了。室友崇拜连连,想起了我的班花,快点开学啊,阿西吧...

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).contentf = 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).contentf = 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).contentf = open('终末的女武神/' + chapter + '.mp4', "wb")f.write(result)


发现不会的或者学习Python的,可以直接评论留言或者私我【非常感谢你的点赞、收藏、关注、评论,一键四连支持】

热血动漫番太好看了!用Python爬取了1T的动漫,内存都爆了相关推荐

  1. Python爬取彼岸图4k壁纸,想要什么类型的壁纸就输入什么壁纸,太方便了。

    你桌面的壁纸还是用的默认壁纸么?太low了,今天教你用python爬取彼岸图网的4k壁纸,想要什么类型的壁纸就爬什么壁纸,快点来跟我一起试试吧! 这个壁纸怎么样?喜欢吗?你值得拥有... 代码操作一下 ...

  2. python爬取B站番剧索引页面并保存文本和图片

    该篇文章为"行路难=_="原创 期末的Python考试要写一个爬取网站信息的程序,我就选取了b站番剧索引页面作为目标网页(因为感觉番剧主页的信息太杂了.) 目标网页:https:/ ...

  3. 实战 | 用Python爬取《云南虫谷》3.6万条评论,并做数据统计可视化展示分析,好看!...

    最近鬼吹灯系列网剧<云南虫谷>上线,作为鬼吹灯系列作品,承接上部<龙岭迷窟>内容,且还是铁三角原班人马主演,网友直呼非常好看! 今天,我们就用Python爬取目前全部剧集的评论 ...

  4. 实战|用Python爬取《云南虫谷》3.6万条评论,并做数据统计可视化展示分析,好看!

    大家好,我是才哥. 最近鬼吹灯系列网剧<云南虫谷>上线,作为鬼吹灯系列作品,承接上部<龙岭迷窟>内容,且还是铁三角原班人马主演,网友直呼非常好看! 今天,我们就用Python爬 ...

  5. 用python爬取漫画,代入感太强了

    导语: 哈喽,哈喽~当有人给你安利了一部超级好看的漫画时. 你点进去看了一下,这画风,这剧情,代入感太强我现在宣布我就是女主了. 但是看着看着,要vip你又没有,这是什么人间疾苦啊!我的女主光环呢? ...

  6. 用Python爬取手机壁纸,太简单了吧

    用Python爬取手机壁纸,太简单了吧! 人生苦短,快学Python! 在Python爬虫的学习过程中,爬取图片几乎是每个初学者都练习过的项目,比如我们之前就分享过:如何用Python快速爬取小姐姐的 ...

  7. python爬取各类基金数据,以『动图可视化』方式展示基金的涨跌情况

    01前言 去年接触基金,体会到了基金的香(真香),今天也是过年后基金开始交易的第一天,今天爬取『蛋卷基金』数据,通过pyecharts动图可视化方式展示基金的涨跌情况. 本文将围绕这三点去进行爬取数据 ...

  8. [AHK]爬取i问财主动买入前100股票

    i问财数据获取示例,抛砖引玉. http://www.iwencai.com/ 添加条件: 主动买入比>主动卖出比且主动买入比排名前100 (100个) 查询结果如下: ahk来搞定 /* 功能 ...

  9. Python爬虫从入门到精通:(9)数据解析_xpath解析2_爬取4K高清动漫图片_Python涛哥

    使用xpath爬取4K高清动漫图片名称和图片数据 爬取当前页: # 创建文件夹 存储图片 dirName = 'GirlsLib' if not os.path.exists(dirName):os. ...

最新文章

  1. 计算机没有autoCAD_挑战在一年内用晚上业余时间学会灵活运用CAD(1)|cad|autocad|图学|计算机|电子电路...
  2. linux rmp命令安装包在哪里_【MongoDB系列】Linux系统安装MongoDB
  3. define、const、typedef区别
  4. Django入门 -- 框架操作基本流程
  5. 征稿 | JIST 2019 Regular Technical Papers
  6. 的控制台主题_【12.11最新版】芯片机/大气层主题软件NXThemesInstaller
  7. Java DataInputStream readUnsignedByte()方法(带示例)
  8. 文本分类模型_多标签文本分类、情感倾向分析、文本实体抽取模型如何定制?...
  9. php中案值传递和安引用传递,PHP里的值传递与引用传递
  10. 开发Servlet的方法(2)
  11. 计算机硬盘的常用分区工具,磁盘分区工具,详细教您硬盘分区工具diskgenius怎么使用...
  12. 【CAD arx二次开发】CAD2020 通过Wizard向导新建arx项目
  13. Win10家庭中文版如何添加本地用户
  14. php实现必应api提交
  15. Python - 装机系列2 Ubuntu(云)
  16. 从头开始学Redisson--------限流器
  17. Tomcat构建企业级高负载WEB服务器之部署jspgou商城
  18. 云计算架构中的Iaas、Paas、SaaS详解
  19. Android开发之多级下拉列表菜单实现(仿美团,淘宝等)
  20. js canvas绘制 一箭双心

热门文章

  1. iOS音频播放 (一):概述 转
  2. 喝酒的规矩(是男人必看必顶,女人可不看直接顶)
  3. Linux 命令(81)—— chmod 命令
  4. gin mongodb restful api设计: 动态的patch接口
  5. 14.jQuery常用方法
  6. RNN,LSTM中如何使用TimeDistributed包装层,代码示例
  7. 使用IDEA在Maven中创建MyBatis逆向工程以及需要注意的问题(入门)
  8. 10分钟10行代码开发APP(delphi 应用案例)
  9. 【Python】【网络编程】
  10. gdb调试中出现optimized out