此处给出下载壁纸的链接地址彼岸图网,进入网站之后,我们看到可以下载风景,游戏,动漫,美女等类型的4K图片,装逼一下,re库有贪婪匹配,那我们就写一个通用代码来下载网站全部的图片。
打开彼岸图网的链接之后,进入开发者模式,快捷键为(Fn + F12),观察网页源代码发现,我们所要解析的图片都存放在了body标签下面的
为了提示用户可下载的最大页码数量,我们还需要知道最大页码的存放位置,通过定位发现,最大页码存储在
max_page = tree1.xpath('//div[@class = "page"]/a[7]/text()')[0]
2. 解析图片的地址和名称
接上述第一点,我们发现了图片的地址存储在li标签下面a标签img的属性src中,属性alt中存储着图片的名称。我们选择xpath进行解析,需要导入第三方库lxml。
img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
title_list = li.xpath('./a/img/@alt')[0] + ".jpg"
3. 进行持久性存储
在存储之前在子目录下面新建一个文件夹进行存储照片,之后将图片保存下来。
if not os.path.exists('./picLibs'):
os.mkdir('./picLibs')
for li in li_list:
# ./表示的是当前目录下面进行操作
img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
title_list = li.xpath('./a/img/@alt')[0] + ".jpg"
#print(title_list,img_list)
img_data = requests.get(url = img_list,headers = headers).content
img_path = './picLibs/' + title_list
with open(img_path,'wb') as fp:
fp.write(img_data)
print(title_list,"保存成功!!!")
4. 代码和总结
import requests
from lxml import etree
import os
import sys
if __name__ == "__main__":
message_list = ['fengjing','meinv','youxi','dongman','yingshi','mingxing','qiche','dongwu','renwu','meishi','zongjiao','beijing']
print(
'''
软件简介:本程序主要下载4k图片,您可根据您的需求进行下载!!!
软件作者:---喧啸
《下载选择目录》
******************************
** 风景 美女 游戏 动漫 影视 明星 **
** 汽车 动物 人物 美食 宗教 背景 **
******************************
'''
)
choice = str(input("请输入您的下载选择(由于本人水平有限,输入时请输入对应的拼音):"))
if choice in message_list:
print("下载准备中,请稍后!!!")
else:
print("输入出错,请按照要求输入!!!")
sys.exit()
page_url = "http://pic.netbian.com/4k" + choice + "/"
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
}
page = requests.get(url=page_url, headers=headers)
page_txt = page.text
# 数据解析 SRC属性值 ALT的值
tree1 = etree.HTML(page_txt)
max_page = tree1.xpath('//div[@class = "page"]/a[7]/text()')[0]
print("温馨提示!!! " + "您爬取的网页最大页码为",max_page)
page = int(input("请输入最大页码:"))
for i in range(1,page+2):
url = page_url + "index_" + str(i) + ".html"
response = requests.get(url = url,headers = headers)
response.encoding = "gbk"
page_text = response.text
#数据解析 SRC属性值 ALT的值
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@class = "slist"]//li')
if not os.path.exists('./picLibs'):
os.mkdir('./picLibs')
for li in li_list:
# ./表示的是当前目录下面进行操作
img_list = "http://pic.netbian.com" + li.xpath('./a/img/@src')[0]
title_list = li.xpath('./a/img/@alt')[0] + ".jpg"
#print(title_list,img_list)
img_data = requests.get(url = img_list,headers = headers).content
img_path = './picLibs/' + title_list
with open(img_path,'wb') as fp:
fp.write(img_data)
print(title_list,"保存成功!!!")
上述代码中,我们打印输出了一个提示信息,提供了可视化的提示效果,此代码还有很多修改和完善的地方,欢迎大家关注我的公众号来交流和学习,同时我将代码也进行了打包,需要的小伙伴留言私信我哦!