多线程爬取总结与爬取爱奇艺电影实战

首先要导入进程池:from multiprocessing import Pool

然后要定义一个线程执行的函数,让每一个线程都去执行:

import requests
from multiprocessing import Pool#导入进程池

def downloadmovie(i):
    url = 'https://vip.okokbo.com/20171220/uf1i6rRn/800kb/hls/Lx6ZM45317%3d.ts'%i
    header = {
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134"
        }
    response = requests.get(url,header)
    with open('mp4/{}.mp4'.format(i),'wb') as f:
        f.write(response.content)
if __name__ == '__main__':
    pool = Pool(25)#创建25个线程
    for i in range(1,1721):
        pool.apply_async(downloadmovie,(i,))#让每个线程都去执行downloadmovie函数,传递的参数为(i,)
    pool.close()#任务执行完毕以后就关闭线程
    pool.join()#等待线程结束

下载完成以后就使用copy /b *.ts 123.mp4进行拼接,/b是电影的数据类型。

你可能感兴趣的:(爬虫)