本帖最后由 ARtcgb 于 2021-4-28 07:36 编辑
简介
功能介绍: 搜索、爬取并下载wallhaven.cc壁纸站的壁纸,自动建立文件夹。
环境需求:
Python 3
requests库
BeautifulSoup库
Faker库(可选)
使用方法: 下载直接运行源码即可。
爬取思路
壁纸站的搜索链接构成:https://wallhaven.cc/search?q= 搜索关键词 &page= 页码 。
先找到搜索页面里所有a, class_="preview" 标签,获取里面的href 值存入列表。
然后进入图片子界面,找到img, id='wallpaper' ,获取他的src ,访问链接并下载即可。
源代码
import requests
from faker import Faker
from bs4 import BeautifulSoup
import os
f = Faker()
HEADERS = {
'user-agent': f.user_agent()
}
search = input("请输入搜索关键词:")
num = 0
list_html = []
for page in range(1, 6):
html = "https://wallhaven.cc/search?q=" + search + "&page=" + str(page)
requests_html = requests.get(html, headers=HEADERS)
bs_html = BeautifulSoup(requests_html.text, "lxml")
for link in bs_html.find_all('a', class_="preview"):
image_link = link['href']
if image_link:
list_html.append(image_link)
num += 1
print("已获取第" + str(num) + "个链接")
a = os.path.exists("./壁纸/")
if a:
print("文件夹已存在,PASS")
else:
os.mkdir("./壁纸/")
print("文件夹建立成功")
b = os.path.exists("./壁纸/" + search)
if b:
print("文件夹已存在,PASS")
else:
os.mkdir("./壁纸/" + search)
print("文件夹建立成功")
num = 0
past_download_list = []
for html_link in list_html:
requests_html = requests.get(html_link, headers=HEADERS)
bs_html = BeautifulSoup(requests_html.text, "lxml")
img = bs_html.find('img', id='wallpaper')
r = requests.get(img['src'])
num += 1
with open("./壁纸/" + search + "/" + str(num) + ".png", 'wb') as f:
f.write(r.content)
print("第" + str(num) + "张写入成功")
教程
如何指定下载壁纸数量(默认120)
修改代码第十三行,调整爬取的页码数量(从1-6),一页20张.
for page in range(1, 6):
如何调整下载路径
修改如下几行代码。
a = os.path.exists("./壁纸/")
if a:
print("文件夹已存在,PASS")
else:
os.mkdir("./壁纸/")
print("文件夹建立成功")
b = os.path.exists("./壁纸/" + search)
if b:
print("文件夹已存在,PASS")
else:
os.mkdir("./壁纸/" + search)
print("文件夹建立成功")
with open("./壁纸/" + search + "/" + str(num) + ".png", 'wb') as f:
|