博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬取校花网视频
阅读量:4589 次
发布时间:2019-06-09

本文共 2754 字,大约阅读时间需要 9 分钟。

import requestsimport reimport timeimport hashlibdef get_page(url):    print('GET %s' %url)    try:        response=requests.get(url)        if response.status_code == 200:            return response.content    except Exception:        passdef parse_index(res):    obj=re.compile('class="items.*? 0:        movie_url=res[0]        return movie_urldef save(movie_url):    response=requests.get(movie_url,stream=False)    if response.status_code == 200:        m=hashlib.md5()        m.update(('%s%s.mp4' %(movie_url,time.time())).encode('utf-8'))        filename=m.hexdigest()        with open(r'./movies/%s.mp4' %filename,'wb') as f:            f.write(response.content)            f.flush()def main():    index_url='http://www.xiaohuar.com/list-3-{0}.html'    for i in range(5):        print('*'*50,i)        #爬取主页面        index_page=get_page(index_url.format(i,))        #解析主页面,拿到视频所在的地址列表        detail_urls=parse_index(index_page)        #循环爬取视频页        for detail_url in detail_urls:            #爬取视频页            detail_page=get_page(detail_url)            #拿到视频的url            movie_url=parse_detail(detail_page)            if movie_url:                #保存视频                save(movie_url)if __name__ == '__main__':    main()#并发爬取from concurrent.futures import ThreadPoolExecutorimport queueimport requestsimport reimport timeimport hashlibfrom threading import current_threadp=ThreadPoolExecutor(50)def get_page(url):    print('%s GET %s' %(current_thread().getName(),url))    try:        response=requests.get(url)        if response.status_code == 200:            return response.content    except Exception as e:        print(e)def parse_index(res):    print('%s parse index ' %current_thread().getName())    res=res.result()    obj=re.compile('class="items.*? 0:        movie_url=res[0]        print('MOVIE_URL: ',movie_url)        with open('db.txt','a') as f:            f.write('%s\n' %movie_url)        # save(movie_url)        p.submit(save,movie_url)        print('%s下载任务已经提交' %movie_url)def save(movie_url):    print('%s SAVE: %s' %(current_thread().getName(),movie_url))    try:        response=requests.get(movie_url,stream=False)        if response.status_code == 200:            m=hashlib.md5()            m.update(('%s%s.mp4' %(movie_url,time.time())).encode('utf-8'))            filename=m.hexdigest()            with open(r'./movies/%s.mp4' %filename,'wb') as f:                f.write(response.content)                f.flush()    except Exception as e:        print(e)def main():    index_url='http://www.xiaohuar.com/list-3-{0}.html'    for i in range(5):        p.submit(get_page,index_url.format(i,)).add_done_callback(parse_index)if __name__ == '__main__':    main()爬取校花网视频

 

转载于:https://www.cnblogs.com/HomeG/p/10519295.html

你可能感兴趣的文章
Spring MVC框架初步讲解
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
C#线程安全打开/保存文件对话框
查看>>
201555334 实验一:Java开发环境的熟悉 总结
查看>>
docker系列 --- 命令详解
查看>>
观察者模式 -- 设计模式系列文章(二)
查看>>
MySql学习14-----数据备份和恢复
查看>>
页面小标签
查看>>
卷积分
查看>>
Asp.Net MVC Filter权限过滤使用说明
查看>>
一次群体code review
查看>>
python-虚拟环境搭建
查看>>
How does exercise keep your brain young?
查看>>
[Linux] 添加环境变量
查看>>
postgresql逻辑结构--表空间(四)
查看>>
rsync备份服务器搭建学习笔记
查看>>
Python中matplotlib模块解析
查看>>
ORA-14551: 无法在查询中执行 DML 操作 .
查看>>
数据结构--栈的应用(表达式求值 nyoj 35)
查看>>
注解:大话AOP与Android的爱恨情仇
查看>>