python自带库的文档官网:https://docs.python.org/zh-cn/3.7/library/index.html
在python下设置welenium+webdriver的方法是 首先找到你的pip.exe的位置(为以后的下载selenium做准备) 下载好对应的webdriver驱动,在官网即可下载 然后利用cmd进入pip的目录输入命名pip install elenium 下载好selenium 之后在输入代码:
browser = webdriver.Chrome("G:\chromedriver_win32\chromedriver.exe") //指定webdriver驱动的位置
browser.get(‘http://www.baidu.com/‘)
在java中设置selenium+webdriver的方法类似 在java的工程中新建一个lib文件夹 在elenium官网下载对应的elenim的jar包(selenium-server-standalone-3.141.59.jar) 放入lib中在add path添加到资源中 在代码中写:System.setProperty("webdriver.chrome.driver", "G:\chromedriver_win32\chromedriver.exe"); WebDriver web=new ChromeDriver();
web.get("https://www.onemanhua.com/10147/1/"+time+".html");
2、截取视频的网址:https://www.iqiyi.com/v_19rvtyq35s.html 通过去网上解析的到视频解析的接口:jx.598110.com/?url= (复制粘贴网址即可) 或者通过这个8090g无广告快速稳定解析:8090g.cn/jiexi/?url= (复制粘贴网址即可) 或者:jx.598110.com/v/2.php?url= 例如:jx.598110.com/v/2.php?url= https://video.sigujx.com/m3u8/3_362389459_1582341457918.m3u8 https://video.sigujx.com/m3u8/3_1680187318_1581741604836.m3u8 3、打开抓包软件去进行网址的分析 一旦出现.ts的或者.m4a或.mp4或者.m3u8的统统接下开去做分析 得到对应的视频网址时去用代码去下载 4、书写代码下载视频 第九集的m3u8:https://baidu.oss.aliyuncs.gms-lighting.com/m3u8/2075.m3u8 第十集的m3u8:https://baidu.oss.aliyuncs.gms-lighting.com/m3u8/2076.m3u8 庆余年的m3u8:https://baidu.oss.aliyuncs.gms-lighting.com/m3u8/1567.m3u8 //第四集 java代码: package com.spite.max; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.io.FileUtils;
public class Spite { private static int m_start = 2079; //表示第一个集数的代号 private static int m_end = 2080; //表示最后一个集数的代号 public static void main(String arg[]) throws IOException, InterruptedException { while(m_start <= m_end) { File file_folder = new File("src_movie"); if(!file_folder.exists()) //如果不存在则创建文件夹 file_folder.mkdir(); URL url = new URL("https://baidu.oss.aliyuncs.gms-lighting.com/m3u8/"+m_start+".m3u8"); URLConnection conn = url.openConnection(); conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0"); FileWriter fw = new FileWriter(m_start+".m3u8"); String line; BufferedReader file=new BufferedReader(new InputStreamReader(conn.getInputStream())); while((line=file.readLine())!=null) { fw.write(line+"\r\n"); } fw.close(); //将对应的文件关闭 File_Manage(m_start); //视频文件资源的分割处理 File_Down(m_start); //视频文件资源的下载 File_FFmpeg(m_start); //将零散的ts视频文件进行整合 File_Delete(m_start); //将多余的视频辅助文件删除 System.out.println(m_start+"下载完成!"); if(m_start == m_end) { System.out.println("视频全部下载完毕!"+"\n\n"); }else { System.out.println("========================下一段视频========================"+"\n\n"); m_start++; } } } private static void File_Manage(int m_m3u8) throws IOException { FileReader fr = new FileReader(m_m3u8+".m3u8"); BufferedReader frbuff = new BufferedReader(fr); FileWriter fw = new FileWriter(m_m3u8+".txt"); BufferedWriter fwbuff = new BufferedWriter(fw); String line; while((line = frbuff.readLine())!=null) { if(line.startsWith("https")&&line.endsWith("jpg")) { String src = line.replaceAll(".jpg", ".ts"); fwbuff.write(src+"\r\n"); } } frbuff.close(); fwbuff.close(); File file_txt = new File(m_m3u8+".m3u8"); file_txt.delete(); } private static void File_Down(int m_m3u8) throws IOException, InterruptedException { System.out.println("========================下载中========================"); ExecutorService exec = Executors.newCachedThreadPool(); //创建一个线程池加快下载速度 String line; int cur = 1; FileReader fr = new FileReader(m_m3u8+".txt"); BufferedReader frbuff = new BufferedReader(fr); while((line = frbuff.readLine())!=null) { final int m_cur = cur; final String m_line = line; /*常见的问题之一:某个任务在下载过程中突然对方的服务器关闭了连接, //是服务器单方向的close不属于四次挥手,从而导致任务下载不完就结束了,线程死亡 * 正常完成和未捕获的异常。如果想让任务结束,也只有这2种方式 * 但是这个流还没有关闭导致不能使用 * */ Runnable task = new Runnable() { @Override public void run() { FileOutputStream fout = null; //输出流 try { URL url = new URL(m_line);