其他
Python爬虫教程05:优化《所有页》古装美女下载代码
Python,速成心法
敲代码,查资料,问度娘
练习,探索,总结,优化
前2篇下载图片的例子,大家可以回顾一下,复习一下,由浅入深给大家介绍,大家可以体会一下里面代码的写法。
#本期源码优化的主要地方#
1.自动获取网页的最大页数
2.图片的名称以网页图片名命名,做分类文件夹,比如下方第一页,存放的是第一页的相关数据。
3.本期需要掌握的知识点:列表数据的循环添加,F格式化字符串使用,使用zip函数打包,并循环打印接收到的data数据。
网页图片地址:https://www.hexuexiao.cn/meinv/guzhuang/list-1.html
↓ 源码如下 ↓
import requests
from bs4 import BeautifulSoup
import 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源码集合---------------
Python源代码分享:05使用turtle模块绘制一个彩色螺旋图案