本文目录导读:

Python + requests/BeautifulSoup 方案
import requests
from bs4 import BeautifulSoup
import os
import random
import time
def download_wallpaper(url, save_path='wallpapers'):
"""
从壁纸网站下载图片
"""
# 创建保存目录
if not os.path.exists(save_path):
os.makedirs(save_path)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://wallhaven.cc'
}
try:
# 发送请求
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
# 确保保存的文件路径
filename = f"{int(time.time())}_{random.randint(1000,9999)}.jpg"
filepath = os.path.join(save_path, filename)
# 保存图片
with open(filepath, 'wb') as f:
f.write(response.content)
print(f"✓ 下载成功: {filename}")
return filepath
except Exception as e:
print(f"✗ 下载失败: {e}")
return None
def scrape_wallhaven(keyword='nature', pages=3):
"""
从Wallhaven搜索并下载壁纸
"""
base_url = f"https://wallhaven.cc/search?q={keyword}&categories=111&purity=100&sorting=random&order=desc"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
for page in range(1, pages+1):
url = f"{base_url}&page={page}"
print(f"正在获取第 {page} 页...")
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 找所有壁纸链接
img_links = soup.select('a.preview')
for link in img_links:
if 'href' in link.attrs:
detail_url = link['href']
# 获取实际图片URL
img_response = requests.get(detail_url, headers=headers)
img_soup = BeautifulSoup(img_response.text, 'html.parser')
img_tag = img_soup.select_one('img#wallpaper')
if img_tag and 'src' in img_tag.attrs:
download_wallpaper(img_tag['src'])
time.sleep(1) # 避免请求过快
# 使用示例
# scrape_wallhaven(keyword='mountain', pages=2)
Bash 脚本方案(使用 curl/wget)
#!/bin/bash
# 壁纸下载脚本
SAVE_DIR="./wallpapers"
mkdir -p "$SAVE_DIR"
download_from_unsplash() {
# Unsplash 随机壁纸
echo "正在从 Unsplash 下载..."
for i in {1..5}; do
curl -L "https://source.unsplash.com/1920x1080/?nature,landscape" \
-o "$SAVE_DIR/wallpaper_$i.jpg" \
-H "Accept: image/jpeg" \
-s
echo "✓ 下载壁纸 $i"
sleep 2
done
}
download_from_picsum() {
# Lorem Picsum 随机图片
echo "正在从 Lorem Picsum 下载..."
for i in {1..3}; do
curl -L "https://picsum.photos/1920/1080?random=$i" \
-o "$SAVE_DIR/picsum_$i.jpg" \
-s
echo "✓ 下载图片 $i"
sleep 1
done
}
download_from_wallpapercave() {
# WallpaperCave 特定类别
echo "正在从 WallpaperCave 下载..."
PAGE=$(curl -s "https://wallpapercave.com/nature-wallpapers" | \
grep -oP 'href="[^"]*\.jpg"' -m 10 | cut -d'"' -f2)
i=1
for img_url in $PAGE; do
# 补全URL
full_url="https://wallpapercave.com$img_url"
curl -L "$full_url" -o "$SAVE_DIR/wallpapercave_$i.jpg" -s
echo "✓ 下载壁纸 $i"
((i++))
sleep 1
done
}
# 主函数
echo "=== 开始下载壁纸 ==="
case "$1" in
"unsplash")
download_from_unsplash
;;
"picsum")
download_from_picsum
;;
"cave")
download_from_wallpapercave
;;
*)
echo "用法: $0 {unsplash|picsum|cave}"
exit 1
;;
esac
echo "=== 壁纸下载完成,保存在 $SAVE_DIR ==="
Node.js 方案
const axios = require('axios');
const fs = require('fs');
const path = require('path');
const cheerio = require('cheerio');
async function downloadWallpapers(keyword = 'landscape', count = 5) {
const headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
};
const saveDir = './wallpapers';
if (!fs.existsSync(saveDir)) {
fs.mkdirSync(saveDir, { recursive: true });
}
try {
// 从 Wallhaven 获取
const response = await axios.get(
`https://wallhaven.cc/search?q=${keyword}&sorting=random&order=desc`,
{ headers }
);
const $ = cheerio.load(response.data);
const links = [];
$('a.preview').each((i, elem) => {
if (i < count) {
links.push($(elem).attr('href'));
}
});
// 下载每个链接的高清图片
for (const link of links) {
const detailResponse = await axios.get(link, { headers });
const detailPage = cheerio.load(detailResponse.data);
const imgUrl = detailPage('img#wallpaper').attr('src');
if (imgUrl) {
const imgResponse = await axios.get(imgUrl, {
headers,
responseType: 'stream'
});
const filename = `${keyword}_${Date.now()}_${Math.random().toString(36).slice(2)}.jpg`;
const filepath = path.join(saveDir, filename);
const writer = fs.createWriteStream(filepath);
imgResponse.data.pipe(writer);
await new Promise((resolve, reject) => {
writer.on('finish', resolve);
writer.on('error', reject);
});
console.log(`✓ 下载完成: ${filename}`);
await sleep(1000);
}
}
} catch (error) {
console.error('下载失败:', error);
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
downloadWallpapers('nature', 10);
简易 Python 版本(适合快速使用)
import requests
import os
import urllib.parse
def quick_download(count=5):
"""快速下载随机壁纸"""
save_dir = "quick_wallpapers"
os.makedirs(save_dir, exist_ok=True)
# 使用 Lorem Picsum(无需解析HTML)
for i in range(count):
url = f"https://picsum.photos/1920/1080?random={i}"
response = requests.get(url)
filename = f"wallpaper_{i+1}.jpg"
with open(os.path.join(save_dir, filename), 'wb') as f:
f.write(response.content)
print(f"✓ 下载: {filename}")
# 运行
quick_download(10)
使用说明
-
安装依赖:
- Python:
pip install requests beautifulsoup4 - Node.js:
npm install axios cheerio
- Python:
-
常见壁纸网站:
- WallHaven: https://wallhaven.cc
- Unsplash: https://unsplash.com
- Pexels: https://www.pexels.com
- Bing壁纸: https://cn.bing.com/images/trending
-
注意事项:
- 遵守网站robots.txt规则
- 控制请求频率,避免被封IP
- 尊重版权,仅用于个人使用
需要我帮你定制特定网站或特定需求的爬虫脚本吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播