当前位置: 首页 > news >正文

Python爬取斗罗大陆全集

打开网址http://www.luoxu.cc/dmplay/C888H-1-265.html 

F12打开Fetch/XHR,看到m3u8,ts,一眼顶真,打开index.m3u8

 

由第一个包含第二个index.m3u8的地址,ctrl+f在源代码中一查index,果然有,不过/前总有个\,这个用replace替换为空

 查到第一个index.m3u8,就可以依次找到.ts地址

①爬取原网页,利用re找到第一个index地址

②再利用re找到第二个,然后爬取ts网页内容,添加到mp4文件中

③正则查找要用非贪婪模式,还有记得加上time.sleep()和timeout,以及user-agent要随机取(参考源码),要不然会有connection aborted,被反爬。。

④查看每一集的url的不同点,最后利用线程池一次性爬好几集(这里爬了1-10集),只要你内存够(

源码:

import requests
from bs4 import BeautifulSoup
import os
import re
import numpy as np
from concurrent.futures import ThreadPoolExecutor
import time
headers=[{'user-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"},{'user-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"},{'user-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/61.0"},{'user-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"},{'user-agent':"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36"},{'user-agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"},{'user-agent':"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"},{'user-agent':"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15"},{'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
]
def fun(url,index):r=requests.get(url,headers=np.random.choice(headers),timeout=5)index_m3u8=re.findall('https:.*?/index.m3u8',r.text)[0]index_m3u8=index_m3u8.replace("\\",'')r=requests.get(index_m3u8,np.random.choice(headers),timeout=5)index_m3u8=index_m3u8.replace('index.m3u8','')index_m3u8=index_m3u8+re.findall('/(.*)?',r.text)[0].split('/')[-3]+'/hls/index.m3u8'r=requests.get(index_m3u8,np.random.choice(headers),timeout=5)ts=re.findall('https://(.*)\.ts',r.text)with open(f"D:/dl/{index}.mp4",'ab') as f:for node in ts:time.sleep(np.random.randint(1,3))node='https://'+node+'.ts'r=requests.get(node,np.random.choice(headers),timeout=5)f.write(r.content)print('ok')
pool=ThreadPoolExecutor(10)
for i in range(1,11):url=f'http://www.luoxu.cc/dmplay/C888H-1-{266-i}.html'pool.submit(fun,url,i)

http://www.lryc.cn/news/134411.html

相关文章:

  • 前馈神经网络解密:深入理解人工智能的基石
  • 顺序栈Sequential-stack
  • 关于工牌(必须5-10个字)
  • PHP混淆加密以及常用的一些加密工具
  • 无涯教程-PHP - ereg()函数
  • 【Ubuntu】简洁高效企业级日志平台后起之秀Graylog
  • TCP特点UDP编程
  • 超级计算机
  • LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)
  • Kotlin 基础学习
  • CW6B-90A-RCW6B-100A-RCW6B-110A-RCW6B-115A-R三相三线式滤波器
  • DP读书:鲲鹏处理器 架构与编程(九)鲲鹏920处理器片上系统
  • 【HBZ分享】java中的BitSet 与 Redis中的BitMap 与 布隆过滤器
  • 《Linux从练气到飞升》No.16 Linux 进程地址空间
  • 【算法题】7004. 判别首字母缩略词
  • ClickHouse(二十一):Clickhouse SQL DDL操作-临时表及视图
  • redis乐观锁+启用事务解决超卖
  • 智能画笔:如何利用AI绘画API打造独特的创作风格
  • ElasticSearchConfig
  • 解决vant组件 van-dialog造成的页面闪动问题
  • SpringBoot内嵌Tomcat连接池分析
  • 分布式协调服务中的几个常见算法
  • 易服客工作室:Houzez主题 - 超级房地产WordPress主题/网站
  • mysql通过binlog日志恢复误删数据
  • Istio入门体验系列——基于Istio的灰度发布实践
  • CSS行内,内部,外部以及优先级
  • LCA——最近公共祖先
  • 游戏开发与硬件结合,开启全新游戏体验!
  • 测试框架pytest教程(4)运行测试
  • Linux 上 离线部署GeoScene Server Py3 运行时环境