一个爬电影的多进程爬虫
今天又是待在家里的一整天,闲着没事干,写写爬虫打发时间,
注释什么的都在下面了,不想写了,慢慢看吧
from multiprocessing import Pool
import requests
from lxml import etree
import os
if not os.path.exists('./测试'):
os.mkdir('./测试')
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3751.400'}
def download(i):
url='https://cn3.5311444.com/hls/20181006/497ddbfe3e702ea73920fb839aa61862/1538820486/film_0%04d.ts' % i # 设置视频碎片下载地址 设置占位符 %04d 4个字符串 tmd 坑爹的%s 浪费我几个小时
html=requests.get(url,headers=headers)
print(url)
ret=html.content # 将获取到的链接
with open('./测试/{}'.format(url[-14:]),'wb')as f: # 保存单个ts文件
f.write(ret) # 写入单个ts并保存在本地
if __name__=='__main__': # 进程池接口 必须要!!!
p=Pool(25) # 设置25个进程下载
for i in range(1192): # 设定循环次数,i用于给前面定义的占位符提供参数
p.apply_async(download, args=(i, )) # 开启进程池 开启下载
p.close() # 线程关闭
p.join() # 线程阻塞
# 最后是在本地的cmd下面操作
# 切换到ts的保存盘符下
# 到保存ts文件根文件夹下
# copy /b *.ts 文件名字 就可以拼接好了