最近在https://wallhaven.cc/上看到了许多喜欢的壁纸,但是每个都点开下载的话比较麻烦,所以写了一个脚本批量下载到
本地,然后想换哪个就可以换哪个了
# _*_ coding: utf-8 _*_
# @Time : 2021/4/22 13:11
# @Author : 贝加尔湖一条鱼
import requests
from bs4 import BeautifulSoup
class Down_pic(object):
def download_file(self,url, path):
"""
把获取的图片链接通过另存保存到本地图片
@url:图片的链接
@path:图片的本地存放路径
"""
r = requests.get(url)
print ('开始下载')
with open(path, "wb") as f:
f.write(r.content)
def get_response(self,url):
"""
解析当前页面的地址,提取图片的链接
@url:页面的链接
"""
response = requests.get(url) #获取页面的代码
soup = BeautifulSoup(response.text,'html.parser')
links = soup.find_all('img',attrs={"class":"lazyload"})
# 因为从页面上获取到的只是图片链接的一部分,所以要经过拼接之后才能用
for link in links:
link = link['data-src']
link = link.replace("small",'full')
link = link.replace('th','w')
pic_link = link[0:31]+"wallhaven-"+link[31:] #拼接后的图片链接
filename = "D:/file_test/WUGUI/pic/"+pic_link[-10:] #拼接后的图片存放路径
self.download_file(pic_link,filename) #调用下载函数
print(pic_link)
if __name__ == '__main__':
# 使用列表的方式存放页面的路径,网站里面有很多的分类,本次脚本选用的是toplist页面的。页面链接很规律,从一开始往后加就行了
start_page = 1
end_page = 10
urls = ["https://wallhaven.cc/toplist?page={}".format(str(i)) for i in range(start_page,end_page)]
for url in urls:
Down_pic().get_response(url)
写的比较粗,有兴趣的小伙伴可以继续优化一下