查看原文
其他

Python爬虫教程05:优化《所有页》古装美女下载代码

作者一小红牛 我的Python教程 2024-01-14


Python,速成心法

敲代码,查资料,问度娘

练习,探索,总结,优化

前2篇下载图片的例子,大家可以回顾一下,复习一下,由浅入深给大家介绍,大家可以体会一下里面代码的写法。

Python爬虫教程03:下载《第1页》古装美女的图片

Python爬虫教程04:下载《所有页》古装美女图片

#本期源码优化的主要地方#

1.自动获取网页的最大页数

2.图片的名称以网页图片名命名,做分类文件夹,比如下方第一页,存放的是第一页的相关数据。

3.本期需要掌握的知识点:列表数据的循环添加,F格式化字符串使用,使用zip函数打包,并循环打印接收到的data数据。

网页图片地址:https://www.hexuexiao.cn/meinv/guzhuang/list-1.html

↓ 源码如下 ↓


import requestsfrom bs4 import BeautifulSoupimport os# 1.新建一个文件夹,用于存放下载的图片或资源os.makedirs('测试图片',exist_ok=True)

#请求头放在函数的外面,方便随时调用headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 2.定义函数的功能:01获取网页图片def get_image_url_name(url): response = requests.get(url, headers=headers) #使用bs4,解析HTML数据 soup = BeautifulSoup(response.text, 'html.parser') images = soup.find_all('img') image_urls = [] # 清空初始url列表 image_names = [] for image in images: image_url = image.get('src') # 取src对应的属性值 image_urls.append(image_url) # 把数据添加到列表 image_name = image.get('alt') image_names.append(image_name) return image_urls , image_names
#2.0获取最大页数def get_maxpages(): url='https://www.hexuexiao.cn/meinv/guzhuang/list-1.html' response = requests.get(url, headers=headers) # 使用bs4,解析HTML数据 soup = BeautifulSoup(response.text, 'html.parser') pages = soup.find('ul', class_='pagination pagination-lg').find_all('li')[-2] #print(pages) nums=int(pages.text) # 直接获取文本数据5页 #print(nums) return nums

if __name__ == '__main__': #运行主函数 # 找到网址的规律,range循环最大页数 for page in range(1, get_maxpages()+1): url =f'https://www.hexuexiao.cn/meinv/guzhuang/list-{page}.html' #print(url) print(f'正在下载,第{page}页'.center(100, "-")) folder = f'测试图片/第{page}页/' # 新建第几页文件夹 os.makedirs(folder, exist_ok=True)
#用变量data接收返回 data = get_image_url_name(url) #print(data) for url_image, file_name in zip(data[0], data[1]): print(url_image, file_name)                        #03.请求和下载数据,并保存到测试图片文件夹 res = requests.get(url_image) with open(f'测试图片/第{page}页/' + file_name + '.jpg', 'wb') as f: f.write(res.content) f.close()

print('!!图片数据已经下载完成!!')

完毕!!感谢您的收看

------------往期更多精彩内容------------

Python最新版本的安装教程(附详细图)

Pycharm的下载与安装方法(附教程图)

Pycharm初始化,新建一个python程序

Pycharm英文页界面,2种汉化的设置方法(教程附图)

Python常用的英文单词集合

Python基础教程:01代码的规范书写

Python基础教程:02内置函数的用法解析

Python基础教程:03运算符与表达式

Python基础教程:04流程控制语句

Python基础教程:05字符串String的用法解析

Python基础教程:06列表,元组,字典的用法

Python入门教程:07文件及目录操作

Python入门教程:08变量,保留字,字符串索引

Python入门教程:09常用的模块库

Python入门教程10:datetime的用法

Python入门教程:11推导式的写法

Python入门教程12:pip命令的使用

Python入门教程13:json的用法

Python入门教程14:高阶函数用法解析

Python入门教程15:面向对象编程思想

Python入门教程16:错误和异常调试

Python入门教程17:模块与包

----------爬虫系列--------------

Python爬虫教程:02分享采集网页数据的详细步骤

Python爬虫教程:01网页的请求与服务器的响应

认识HTML网页的基本结构

使用Python,下载一张百度的小姐姐图片

十大热门编程语言,如何书写Hello World代码?

---------------Python源码集合---------------

Python源代码分享:01九九乘法表

Python源代码分享:02海龟画图五角星

Python源代码分享:03画一个奥运五环图

Python源码分享:04列表数据的奇偶求和

Python源代码分享:05使用turtle模块绘制一个彩色螺旋图案

Python源代码分享:06猜数字大小与剪刀石头布

Python源代码分享:07画满天繁星

继续滑动看下一个

Python爬虫教程05:优化《所有页》古装美女下载代码

作者一小红牛 我的Python教程
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存