直接将代码放入PyCharm编译器内
# 导入requests 库
import requests
from lxml import etree
# 通过改变 页数 获取 不同页数 的源代码
for page in range(1, 10):
# 构造 url
url = 'https://sc.chinaz.com/tupian/renwusuxie_' + str(page) + '.html'
# 构造请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0'
}
# request get型获取页面
re = requests.get(url, headers=headers)
# 转换为 utf-8 格式,防止获取名字时乱码问题
re.encoding = 'utf-8'
# 获取lxml对象
soup = etree.HTML(re.text)
# 获取页面码源代码的 图片url地址
photo_url = soup.xpath('//div[@class="item"]/img/@data-original')
# 构造数组 ?
photo_urll = []
# 把 获取的全部 url 弄到 photo_urll 内,并且在前面加上 https: 方便 request
for i in range(1, len(photo_url)):
photo_urll.append('https:' + photo_url[i])
# 获取页面码源代码的 每张图片的名字
name = soup.xpath('//div[@class="item"]/img/@alt')
# //标签[@后面内容]/子标签/@需要获取的指定标签
# 构造数组 ?
# #div class="item">
# <img src="../static/common/com_images/img-loding.png"
# style="height: 279px"
# data-original="//scpic.chinaz.net/files/default/imgs/2022-12-13/14b80df1dab40b0e_s.jpg" # 需要获取这个,这个是url
# class="lazy"
# alt="欧美时尚戴帽女生写真图片" # 这个获取的是图片名字
# />
namee = []
# 把每张图片名字 弄到 namee 内
for i in range(1, len(name)):
namee.append(name[i])
# 用 for循环获取 每个图片 的url
for x in range(1, len(name)):
# try 防止报错,预防出现爬取不到情况
try:
# request请求获取 每个图片url 的数据流
re = requests.get(photo_urll[x], headers=headers).content
# 用 wb 方式,写入到 文件夹内,并给其命名
with open('E:/MyProcjects/信息收集1/photos/' + namee[x] + '.png', mode='wb') as f:
f.write(re)
# 打印出 图片名字 下载成功 ! 的提醒
print(namee[x] + " 下载成功 !")
f.close()
except Exception as e:
# 报错就打印出 !
print(' ! ')
pass