如何使用python批量下载图片?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
使用环境:python3+pycharm+requests+re+BeatifulSoup+json
步骤:
1、然后找到你需要下载图片的网站。
2、找到需要下载的图片,在搜索界面查看源码,发现这个和前面的分析如出一辙,它的图片id藏在js里面。我们只需通过正则解析。拿到id然后拼凑url即可完成所有图片地址。
3、我们尝试能不能获得一个简单通用的url地址。
代码与总结
import requests from urllib import parse from bs4 import BeautifulSoup import re import json header = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 'Cookie': 'wluuid=66; ', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 'Accept-encoding': 'gzip, deflate, br', 'Accept-language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'connection': 'keep-alive' , 'Host': 'stock.tuchong.com', 'Upgrade-Insecure-Requests': '1' } def mkdir(path): import os# 引入模块 path = path.strip()# 去除首位空格 path = path.rstrip("\\") # 去除尾部 \ 符号 isExists = os.path.exists(path) # 判断路径是否存在 # 存在 True # 不存在 False if not isExists: # 判断结果 os.makedirs(path)# 如果不存在则创建目录 # 创建目录操作函数 return True#print (path + ' 创建成功') else: # 如果目录存在则不创建,并提示目录已存在 #print(path + ' 目录已存在') return False def downloadimage(imageid,imgname):##下载大图和带水印的高质量大图 url = 'https://weiliicimg9.pstatp.com/weili/l/'+str(imageid)+'.webp' url2 = 'https://icweiliimg9.pstatp.com/weili/l/'+str(imageid)+'.webp' b=False r = requests.get(url) print(r.status_code) if(r.status_code!=200): r=requests.get(url2) with open(imgname+'.jpg', 'wb') as f: f.write(r.content) print(imgname+" 下载成功") def getText(text,free): texturl = parse.quote(text) url="https://stock.tuchong.com/"+free+"search?term="+texturl+"&use=0" print(url) req=requests.get(url,headers=header) soup=BeautifulSoup(req.text,'lxml') js=soup.select('script') path='' if not free.__eq__(''): js=js[1] path='无水印/' else: js=js[4] path='图虫创意/' print(js) pattern = re.compile(r'window.hits = (\[)(.*)(\])') va = pattern.search(str(js)).group(2)#解析js内容 print(va) va = va.replace('{', '{').replace('}', '},,') print(va) va = va.split(',,,') print(va) index = 1 for data in va: try: dict = json.loads(data) print(dict) imgname='img2/'+path+text+'/'+dict['title']+str(index) index+=1 mkdir('img2/'+path+text) imgid=dict['imageId'] downloadimage(imgid,imgname) except Exception as e: print(e) if __name__ == '__main__': num=input("高质量大图带水印输入1,普通不带水印输入2:") num=int(num) free='' if num==2: free='free/' text = input('输入关键词:') getText(text,free)
这样,整个流程就完成了,在使用方面,先输入1或2(1代表有水印高质量图,2代表共享图),在输入关键词即可批量下载。
感谢各位的阅读!看完上述内容,你们对如何使用python批量下载图片大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。