Python批量自动下载获取图片

举报
irrational 发表于 2022/01/23 02:12:30 2022/01/23
【摘要】 import requests from bs4 import BeautifulSoup import json import eventlet import os urlshu = 1 #...
import requests
from bs4 import BeautifulSoup
import json
import eventlet
import os

urlshu = 1      #url中first = urlshu
pictureshu = 1  #图片下载时的名字(加上异常图片的第几张图片)
soupshu = 0     #每35张soup列表中第soupshu个
whileshu = 35   #用于while循环的数(因为每个页面35张图片)



url1 = 'https://cn.bing.com/images/async?q='
url2 = '&first=%d&count=35&cw=1177&ch=737&relp=35&tsc=ImageBasicHover&datsrc=I&layout=RowBased&mmasync=1'
head1 = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'
    }
#有35张图片的网页的请求标头

head2 = {
'Cookie': 'Hm_lvt_d60c24a3d320c44bcd724270bc61f703=1624084633,1624111635',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'
    }
#具体图片的网页的请求标头

print('请输入查找内容:')
content = input()
if os.path.exists('./%s'%content):
    pass    #创建文件夹'图片'
else:
    os.mkdir('./%s'%content)
print('请输入查找图片数量:')
number = int(input())
url = url1 + content + url2 #合并成去往有35张图片的网址

while whileshu:
    r0 = requests.get(url%urlshu,headers = head1).text  #发送get请求并将内容转化成文本
    soup = BeautifulSoup(r0,features="html.parser").find_all('a','iusc')   #解析r0并找到a和class=iusc的标签
    data = str(soup[soupshu].get('m'))  #将列表soup的第soupshu位中的m提取出来
    zidian = json.loads(data)   #将data转化成字典形式
    ifopen = 1      #用于下方判断是否下载图片
    with eventlet.Timeout(1,False):     #设定1秒的超时判断
        try:
            picture = requests.get(zidian['murl'],headers = head2).content  #发送get请求并返回二进制数据
        except:
            #print('图片%d超时异常'%pictureshu)    #说明图片异常
            pictureshu -= 1
            ifopen = 0      #取消下载此图片,否则会一直卡着然后报错
    while ifopen == 1:
        text = open('%s/'%content + '%d'%pictureshu + '.jpg','wb')  #将图片下载至文件夹'图片'中
        text.write(picture)     #上行代码中'wb'为写入二进制数据
        text.close()
        ifopen = 0
        number = number - 1
        
    pictureshu = pictureshu + 1
    soupshu = soupshu + 1
    whileshu = whileshu - 1
    
    if whileshu == 0:   #第一页图片下载完成,将网址的first进1
        urlshu = urlshu + 1
        whileshu = 35
        soupshu = 0
        
    if number == 0:     #下载图片数量达标,退出循环
        print("查找完成")
        break



在这里插入图片描述
在这里插入图片描述
会自动生成你想搜索的这个东西的目录,非常方便,同时会自动批量编号。

文章来源: blog.csdn.net,作者:irrationality,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_54227557/article/details/122618760

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。