from lxml import etree
import os
import requests
if __name__ == "__main__":
#爬取4k壁纸的网站url
url = "http://pic.netbian.com/4kfengjing/"
hearder = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46'
}
#向目标网站发起请求
respond = requests.get(url=url,headers=hearder).content
#将html文档源码加载到etree对象中
tree = etree.HTML(respond)
#因为后面要获取图片的名字作为文件名,就先获取到li标签
li_list = tree.xpath('//div[@class="slist"]/ul/li')
print(li_list)
#如果没有4kbackground这个文件夹,就自动创建这个文件夹
if not os.path.exists('./4kbackground'):
os.mkdir('./4kbackground')
#循环获取到的每一个li
for i in li_list:
#获取图片路径,并且补全路径
src = "http://pic.netbian.com"+i.xpath('./a/img/@src')[0]
#将图片的alt属性的值作为图片的名字使用
name = i.xpath('./a/img/@alt')[0]
#请求图片响应,content二进制
imgrespond = requests.get(url=src,headers=hearder).content
#补全完整的 每一个图片的文件名
path = "./4kbackground/"+name+'.jpg'
with open(path,'wb') as f:
#写入图片到指定文件下
f.write(imgrespond)
print("{}图片下载成功".format(name))