爬取视频:哥拉斯2:怪兽之王。
以下是爬取的片段:
1.解析视频url,目前博主只能借助第三方接口解析,得到如下所示的url:
上图就是每个视频小片段的url,有什么规律眼不瞎的都看得出来哈哈。
2.新建.py文件,代码直接附上
import multiprocessing
import threading
import time
import requests
from multiprocessing import Pool
#test方法,参数i用于拼接url
def test(i):
#设置头信息
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
#拿到其中一个url,变化部分只有尾部一部分,可以使用python的字符串格式化,%04d指的是将i替换进来后,不满4位的前面补0,满4位直接替换
url = "https://baidu.com-l-baidu.com/20190813/14599_f58526fd/1000k/hls/6829deecf9e00%04d.ts" % i
#请求地址
response = requests.get(url,headers=headers)
#判断响应状态码,不为200继续请求(此处是博主想到的避免漏爬的方法,比较死,有好办法的请留言,因为并发数较多,可能由于超时问题会导致一部分数据漏掉,所以在这加判断)
while response.status_code != 200:
response = requests.get(url,headers=headers)
#新建文件名字取url的后8位
file = open("D:\\爬虫\\{}".format(url[-8:]), "wb")
print("开始写入片段"+str(i))
file.write(response.content)
print("写入片段" + str(i)+"结束\n")
file.close()
if __name__=='__main__':
# pool = Pool(multiprocessing.cpu_count()*2)
#256个进程,并发爬取,配置不好的别这样
pool = Pool(256)
for i in range(1975):
pool.apply_async(test, (i,))
print("当前爬取第"+str(i)+"个片段")
# time.sleep(2)
pool.close()
pool.join()
3.代码就这么多,爬个vip完全够用,小说什么的只要改网页解析逻辑即可,后续去学学爬虫框架,看了一下scrapy框架不难
另外,目前的url是借助第三方接口解析出来的,哪位大佬会自己手动解析,麻烦教教弟弟。。。。
不得不说,爬虫这块,java确实比不上python。。。
对了,另外再附上win10系统合并视频的命令
copy /b *.ts new.ts
记得注意合并顺序,不懂的留言。。。