Python爬取百思不得姐的视频+视频的切割

来源:互联网 发布:vb for循环嵌套if 编辑:程序博客网 时间:2024/04/28 05:44
源码如下:import osimport requestsfrom bs4 import BeautifulSoupimport threadingfrom bj.models import Video# globals(repo_dir = './../tmp')repo_dir = './../tmp/video'# 定义请求数据的返回结果的函数def get_response(url):    # 为了防止被网站禁止访问,携带浏览器参数,假装浏览器请求    headers = {        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'    }    # 取出返回的数据    response =requests.get(url=url,headers=headers).content    return response# 解析网页数据获取视频描述和视频下载urldef get_content_video(html):# 通过bs4解析,用内置的解析器html.parser    soup=BeautifulSoup(html,'html.parser')    # 获取每个视频模块的信息    cont=soup.select('.j-r-list-c')    # 定义一个数组存放视频desc+url    urlList=[]    for item in cont:        # 查找第一个a标签的内容,作为我们后面保存MP4的文件名        name=item.find('a').text        # 查找视频url        pmUrl=item.select('.j-video')[0].get('data-mp4')        # 提取视频id用于后期生成文件名        video_id=item.select('.j-video')[0].get('data-id')        #以元组的形式添加到数组        urlList.append((name,pmUrl,video_id))    return urlList# 使用threading异步下载视频def download(urlList,page):    #判断'./../tmp/vodeo'文件夹是否存在    f_path=os.path.join(repo_dir,page)    if not os._exists(f_path):        print('路径不存在,马上创建!')        os.makedirs(f_path)    for item in urlList:        #判断当前视频是否有url        if item[1] is None:            continue        # 创建视频的路径-->[-3:]截取文件名后缀        f_path_video=os.path.join(f_path,'%s.%s'%(item[2],item[1][-3:]))        #通过多线程的方式下载文件,增加下载速度        thread=threading.Thread(target=save_video,args=(f_path_video,item[1]))        #启动线程        thread.start()        #如果下载正常则将视频数据存入数据库中        Video.objects.create(            video_id=item[2],            video_url=item[1],            video_desc=item[0],        )# 正式下载视频文件def save_video(f_path_video,video_url):    response=get_response(video_url)#调用方法返回MP4文件的二进制流数据    # 通过文件写入的方式保存成文件    with open(f_path_video,'wb') as f:        f.write(response)#主函数def main():    for i in range(1,50):        print("" + i + "")        url = 'http://www.budejie.com/video/%s' % str(i)        html = get_response(url)        urlList=get_content_video(html)        download(urlList,str(i))## if __name__=="__main__":#     main()'''    ** 由于我们这里仅用于测试,所以我们之抓取一页    ** 链接最后的数字表示抓取的数据页码,由于首页的1可以不写,也可以写上    ** 为了大家更好的理解多页的表示,这里我们仅抓取一页,并且链接后面写有页码1'''def test():    url = 'http://www.budejie.com/video/1'    html = get_response(url)    urlList = get_content_video(html)    download(urlList, str(1))
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿20天胆子小怎么办 两岁宝宝胆子小怎么办 两岁的宝宝胆子小怎么办 孕中期发烧38度怎么办 小班社会交往教案有垃圾怎么办 两个月婴幼儿哭闹入睡难怎么办 8岁儿童睡觉困难怎么办 做精细动作手抖怎么办 15个月宝宝缺锌怎么办 八个月宝宝有蛔虫怎么办 两个月婴儿缺锌怎么办 婴儿天热出汗多尿少怎么办 婴儿5个月不主动抓东西怎么办 打疫苗吃了辣怎么办 四个月宝宝枕秃怎么办 四个月的孩子缺钙怎么办 小孩张牙齿会发烧怎么办 对节白蜡叶子干了怎么办 刷机字库坏了怎么办 魅蓝返回键失灵怎么办 牙蛀严重且牙根松动怎么办 蛀牙伤到神经了怎么办 给客户发错邮件怎么办外贸 cf没有枪声和脚步声怎么办 穿越火线fps太低怎么办 win10玩cf没有声音怎么办 儿子死了欠的钱怎么办 儿子欠银行的钱怎么办 惹了社会上的混混怎么办 我是五年级惹上混混怎么办 孩子挨欺负家长怎么办幼儿园 孩子被同学欺负不敢上学怎么办 孩子被欺负不敢还手怎么办 2个月的婴儿内热怎么办 孩子把别人打了怎么办 学生在学校被打怎么办 妈和老丈人搞外遇怎么办? 丈人住在双方出资房中怎么办 金木水火土缺水怎么办? 练太极注意不集中怎么办 白色裙子被染色了怎么办