首页 编程教程正文

多线程图片采集+下载

piaodoo 编程教程 2020-02-22 22:02:18 906 0 python教程

本文来源吾爱破解论坛

本帖最后由 hksnow 于 2019-2-13 11:35 编辑

我的**小视频采集帖子被删了嗨学网看到论坛里有许多发python爬虫下载图片的,但是都是单线程的,下载有些慢,我发个多线程的吧。


futures模块时python官方对threading等多线程模块的整合,pip安装下就好了

exe使用pyinstaller编译,文件比较大 下载地址:https://www.lanzous.com/i34odpe

新代码

[Python] 纯文本查看 复制代码

import requests
import re
from concurrent import futures
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'
}
def get_pages(num):
    list1 = []
    for x in range(1,num + 1):
        list1.append('https://www.doutula.com/photo/list/?page=' + str(x))
    return list1      
def download_file(file_url):
    f = requests.get(file_url,headers = headers)
    file_name = file_url.split('/')[-1]
    with open(file_name,'wb') as code:
        code.write(f.content)
def make_data(url):
    html1 = requests.get(url,headers = headers)
    result1 = re.findall('data-original="(.*?)!dta',html1.text,re.S)
    return result1
     
def main():
    numbers = input('请输入要下载的页数:')
    url_list1 = get_pages(int(numbers))
    ex = futures.ThreadPoolExecutor(max_workers=10) # 更改最大线程
    print('[INFO]正在下载请稍后...')
    for x in url_list1:
        html_data = make_data(x)
        for y in range(0,68):
            try:
                img_url = html_data[y]
                ex.submit(download_file,img_url)
                #print(file_name)
            except:
                print('Error')          
    print('[INFO]已经下载到根目录') 
# 以下是主函数
if __name__ == "__main__":
    main()


给个好评呗!

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7378.html

搜索