Python爬虫批量下载图片

news/2024/10/17 22:21:22/

一、思路:

        1. 分析URL,图片的URL内嵌于base_url的返回当中

        2. 下载图片

二、代码 

import time
import requests
import os
from lxml import etreeclass DownloadImg():'''爬虫进行美女图片下载'''def __init__(self):self.url = 'http://xxxxxx/4kmeinv/'self.base_url = 'xxxxxxxxxx'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'}self.page = 1#创建图片存储目录def create_img_dir(self):current_dir = os.path.dirname(__file__)img_dir = os.path.join(current_dir,'img')if not os.path.exists(img_dir):os.makedirs(img_dir)return img_dir#下载图片def download_img(self,url_list):for url in url_list:res = requests.get(url=url,headers=self.headers).texttree = etree.HTML(res)self.create_img_dir()#解析for li in tree.xpath('//div[@class="slist"]/ul/li'):img_url = li.xpath('./a/img/@src')[0]full_img_url = self.base_url + img_urlprint(full_img_url)img_name = full_img_url.split('/')[-1]full_img_name = os.path.join(self.create_img_dir(), img_name)# 开始下载图片with open(full_img_name, 'wb') as fs:content = requests.get(url=full_img_url, headers=self.headers).contentfs.write(content)print("{}图片下载完成 ".format(img_name))time.sleep(1)#生成图片URL,返回每个page组成的列表def get_img_url(self,page):url_list = [self.url]if page == 1 :return url_listelif page > 1 :'''https://xxxxxxx/index_3.html'''for i in range(1,page+1):if i == 1 :continuemulti_url = self.url + "index_{}.html".format(str(page))url_list.append(multi_url)return url_listif __name__ == '__main__':#下载页数,2页page = 2#定义类对象down_img = DownloadImg()url = down_img.get_img_url(2)print(url)down_img.download_img(url)print("图片全部下载完成,程序退出")


http://www.ppmy.cn/news/1222775.html

相关文章

image is being used by stopped container 7d2ff8620f3b 删除镜像失败怎么办

这个错误信息表明,镜像 55860ee0cd73 正被一个已停止的容器 7d2ff8620f3b 使用,因此无法正常删除。要解决这个问题,你有两个选择: 删除使用该镜像的容器:首先删除引用该镜像的容器,然后再删除镜像。这可以通…

python接口自动化-参数关联

前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密…

【Vue全家桶 合集 关注收藏】

【Vue全家桶】全面了解学习并实践总结Vue必备知识点 写在前面 🤗 这里是SuperYi Vue全家桶合集站! 🌻 人海茫茫,感谢这一秒你看到这里。希望我的文章对你的有所帮助! 🌟 愿你在未来的日子,保持…

【BUG库】 记录自己学习工作中遇到的程序BUG

BUG库 CGoGO语言环境配置相关go mod algorithm环境相关vscode -- 保存vscode -- 注释 在这篇博客中 我会记录自己在学习和工作中遇到的一系列bug C Go GO语言环境配置相关 go mod go: go.mod file not found in current directory or any parent directory; see ‘go help …

file_put_contents锁的问题

记一次线上生产file_put_contents锁的问题 php项目,很多地方加了日志记录,方法为 function logstr($namelog,$str"",$type"Ymd"){$file date("$type")._.$name..log;$add __DIR__./../runtime/cuslog/.date("Ym&q…

从服务器端获取人脸数据,在本地检测特征,并将特征发送给服务器

目录 1.定义函数get_database_process: 2.定义函数features_construct: 3.定义函数send_features_data: 4. 定义函数database_features_construct: 5. main 函数 1.定义函数get_database_process: …

基于IDEA进行Maven工程构建

Java全能学习面试指南:https://javaxiaobear.cn 1. 构建概念和构建过程 项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程,在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。 项目构建是软件开发过程中…