tuigirl世界杯python项目实战
前言相信大家都做过很多的Python项目吧,是不是很有趣呀,本节为大家介绍一个爬取大量图片的案例,加深大家的知识
废话少说,上代码
首先导入库
import osimport jsonimport requestsimport time
获取所有图片组的信息
def get_info(): """ 获取所有图片组的信息 """ res = [] with open('data/info.txt', 'r') as f: for line in f: data = json.loads(line) res.extend(data['data']['list']) return res
获取要下载的所有图片url、目录名、要存储的名字
def get_info_imgs(info): """ 获取要下载的所有图片url、目录名、要存储的名字 """ res = [] for item in info: nickname = item["author"]["nickname"] catalog = item["source"]["catalog"] name = item["source"]["name"] issue = item["issue"] pictureCount = item["pictureCount"] for pic_idx in range(pictureCount): # url = "http://aiss-1254233499.costj.myqcloud.com/picture/%s/%s/%s.jpg" % (catalog, issue, pic_idx) url = "http://tuigirl-1254818389.cosbj.myqcloud.com/picture/%s/%s/%s.jpg" % (catalog, issue, pic_idx) directory = os.path.join("data", name, "%s-%s" % (issue, nickname)) filepath = os.path.join(directory, "%s.jpg" % pic_idx) # 每张图片一组,包含 图片url,所在目录,存储路径 res.append(( url, directory, filepath )) return res
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习” 领取全套免费python学习资料、视频()装包
设置文件夹,文件夹名为传入的 directory 参数,若不存在会自动创建
def setup_download_dir(directory): """ 设置文件夹,文件夹名为传入的 directory 参数,若不存在会自动创建 """ if not os.path.exists(directory): try: os.makedirs(directory) except Exception as e: pass return Truefrom multiprocessing import Process, Queue, Pool
下载一张图片
def download_one(img): """ 下载一张图片 """ url, directory, filepath = img # 如果文件已经存在,放弃下载 if os.path.exists(filepath): print('exists:', filepath) return setup_download_dir(directory) rsp = requests.get(url) print('start download', url) with open(filepath, 'wb') as f: f.write(rsp.content) print('end download', url)
并发下载所有图片
def download(imgs, processes=10): """ 并发下载所有图片 """ start_time = time.time() pool = Pool(processes) for img in imgs: pool.apply_async(download_one, (img, )) pool.close() pool.join() end_time = time.time() print('下载完毕,用时:%s秒' % (end_time - start_time))
执行函数
if __name__ == "__main__": info = get_info() imgs = get_info_imgs(info) download(imgs, processes=10)
哈哈,是不是步骤明确呀?欢迎大家一起学习,一起交流,共同进步
- 2025-05-21巴州老房装修报价关于自建房施工价格我们怎
- 2025-05-21东莞老房二次装修价格多少东莞旧房装修前后
- 2025-05-21巴中老房装修报价明细建房包工包料一平米多
- 2025-05-21公寓老房修补装修费用旧房改造拆除费用房屋
- 2025-05-21半包老房装修老房改造装修到底选半包还是全
- 2025-05-21126平方老房装修要多少钱126平房子装
- 2025-05-21家用客厅天花板隔音装修前先买好几卷隔音棉
- 2025-05-21官渡区老房装修好点的小区老旧小区变形记官
- 2025-05-21嘉定区老房装修公司地址嘉定比较好的老房装
- 2025-05-2120多平米老房装修多少钱老家的自建房开始