Python多进程爬虫爬取爱奇艺vip视频

爬取视频:哥拉斯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

记得注意合并顺序,不懂的留言。。。

猜你喜欢

转载自blog.csdn.net/weixin_46792649/article/details/108015592