介绍
浅浅欣赏一下吧,质量还是不错滴
开发环境:
- Python 3.8
- Pycharm
模块使用:
# 导入数据请求模块 --> 第三方模块 需要需要自行安装 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块 需要自行安装 pip install parsel
import parsel
# 导入UA的库 --> 第三方模块 需要自行安装 pip install fake_useragent
from fake_useragent import UserAgent
# 导入正则模块 --> 内置模块
import re
# 导入文件操作模块 --> 内置模块
import os.path
实现基本思路:
- 找到图集详细页面,打开开发者工具 F12 再Element中分析到图片的详情页链接
- 请求图集页面,获取到响应数据
- 解析出刚刚分析的图片详情页的链接地址
- 发送请求,获取图片详情页响应数据
- 解析出图片详情页中的图片链接和标题信息
- 请求图片链接,以二级制格式保存.jpg到指定文件夹中
代码如下:
# -*- coding:utf-8 -*-
# @Author:🎈RedBalloon
# @Time:2022/10/8-9:09
# @File:cos.py
# 导入数据请求模块 --> 第三方模块 需要需要自行安装 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块 需要自行安装 pip install parsel
import parsel
# 导入UA的库 --> 第三方模块 需要自行安装 pip install fake_useragent
from fake_useragent import UserAgent
# 导入正则模块 --> 内置模块
import re
# 导入文件操作模块 --> 内置模块
import os.path
for i in range(1, 6): #1-5页
print(f'++++++------正在下载{i}页------++++++')
url = f'http://ciyuandao.com/photo/list/0-0-{i}'
headers = {
# 浏览器基本身份信息
'User-Agent': UserAgent().random
}
response = requests.get(url=url, headers=headers, verify=False)
# <Response [200]> 表示请求成功了 响应对象 verify=False 忽略证书验证的,看到报ssl就可以设置它
print(response)
# 初始化Selector
selector = parsel.Selector(response.text)
# 获取图集详情页的地址
href = selector.css('.pics ul li .tits::attr(href)').getall()
for index in href:
# 'http://ciyuandao.com/photo/show/134563'
pic_url = 'http://ciyuandao.com' + index
# 拼接字符 -- 图集详情页完全的链接
index_data = requests.get(url=pic_url, headers=headers).text
index_selector = parsel.Selector(index_data)
# 获取图集详情页里的图片链接
img_url_list = index_selector.css('.talk_pic img::attr(src)').getall()
# 获取图片标题
title = index_selector.css('.border_bottom::text').get()
# 保存时避免出现文件不允许的命名符号
new_title = title = re.sub(r'[\/:*?"<>|]', '', title)
# 计数器
num = 1
# 自动创建文件夹
file = f'img\\{new_title}\\'
# 判断如果没有这个文件夹
if not os.path.exists(file):
# 自动创建文件夹
os.makedirs(file)
# for循环遍历 提取列表里的图片链接
for img_url in img_url_list:
# 获取图片二进制数据
img_content = requests.get(url=img_url, headers=headers).content
# 保存图片
with open(file + new_title + str(num) + '.jpg', mode='wb') as f:
# 写入数据
f.write(img_content)
# 每次循环 +1
num += 1
print('下载完毕******'+title, pic_url)
评论 (0)