开发者社区> 问答> 正文

怎么下载python 批量下载图片

怎么下载python 批量下载图片

展开
收起
云计算小粉 2018-05-10 20:11:07 4130 0
2 条回答
写回答
取消 提交回答
  • image.png

    2019-11-21 17:59:05
    赞同 展开评论 打赏
  • 给你个文章参考一下https://www.cnblogs.com/helloxia/p/6374099.html


    先来例程:

    正则表达式法:(不推荐)

    [python] view plain copy
    # -- coding: utf-8 --
    """
    Created on Thu Jun 1 16:22:10 2017

    @author: qiu
    """
    import urllib
    import re

    下载网页

    def get_content(url):

    ''''' 
    @url:需要下载的网址 
    下载网址 
    '''  
    html = urllib.request.urlopen(url)  
    content = html.read().decode('utf-8')#转码  
    html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题  

    print (type(content))

    return content  
    

    print (get_content(url))

    def get_image(info):

    ''''' 
    @info:网页信息 
    查看下载内容的编码格式 
     
    <img pic_type="0" class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=69832ccb83025aafd3327ec3cbecab8d/ea2b2834349b033be32596d114ce36d3d539bd09.jpg" 
    width="560" height="315" changedsize="true"> 
    利用正则表达式学习样式规则 
    下载图片 
    '''  
    #正则表达式写法是重点  
    regx = r'pic_type="0" class="BDE_Image" src="(.+?\.jpg)"'  
    pat = re.compile(regx)      
    image_code = re.findall(pat,info)  
    print(type(image_code))  
    #一个一个保存  
    i=1  
    for image_url in image_code:  
        print(image_url)  
        urllib.request.urlretrieve(image_url,"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(i))  
        i+=1  
    

    url = "https://tieba.baidu.com/p/2218566379"
    info = get_content(url)
    get_image(info)

    BeautifulSoup法:
    [python] view plain copy
    # -- coding: utf-8 --
    """
    Created on Thu Jun 1 19:38:11 2017

    @author: qiu
    """
    import urllib
    from bs4 import BeautifulSoup

    beautifulsoup方法,第三方库的方法,爬找网页

    下载网页

    def get_content(url):

    ''''' 
    @url:需要下载的网址 
    下载网址 
    '''  
    html = urllib.request.urlopen(url)  
    content = html.read().decode('utf-8')#转码  
    html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题  

    print (type(content))

    return content  
      

    def get_image(info):

    ''''' 
    利用Soup第三方库实现抓取 
    '''  
    soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”  
    all_image = soup.find_all('img',class_ = "BDE_Image")  
    x=1    
    for image in all_image:  
        print(all_image)  
        urllib.request.urlretrieve(image['src'],"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(x))  
        x+=1  
      

    url = "https://tieba.baidu.com/p/2218566379"
    info = get_content(url)
    print (info)
    get_image(info)

    总结:
    1、首先熟悉网页编程,至少能知道图片对应程序中的位置,将所需要的图片的程序内容单独拿出来,并比较和其他噪声图片的区别,包括class,pic_type等,能够保证所需下载内容程序书写上的唯一性。

    2、利用"re"正则表达式或者all_image = soup.find_all('img',class_ = "") 方法实现唯一化表达

    3、一些技巧总结:print (type( ))利用查看返回值类型,列表?字典?对象?等,如果是class,一定有方法,利用print (dir( )) 查看对象的方法。或者直接看官网文档。

    问题:

    1、一些动态网页需要另外技巧了,例如百度图片(康复机械臂)上的图片如何下载,是另外一个需要解决的问题。

    更好的方法:scrapy(爬虫框架)

    不过安装有点麻烦,当然我还是pip法:库

    2019-07-17 22:25:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载