【Python】实现批量搜索下载Wallhaven站壁纸功能
本帖最后由 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:
``` 感谢大佬,我终于成功了 成功了。由于新安装的,基本什么库都没有,我直接用的ANACONDA的库,比较全,稍微修改了一学就OK了
https://wallhaven.cc/上面的壁纸一直都是我比较喜欢的感谢大佬写的代码,让我解放双手
不成功的兄弟们,可以先看看自己的库全不全,再者就是复制的代码可能会有区别,对照一下,最后,由于这个网站不是国内的,所以有的时候你懂的!!! 学习了,感谢分享 感谢楼主分享 g天天学习,,,,谢谢分享 C:\Users\admin\Desktop\Snipaste_2021-04-28_10-16-05.png
大佬我这是怎么回事啊?
吾爱有三 发表于 2021-4-28 10:18
大佬我这是怎么回事啊?
百度一下就知道了 吾爱有三 发表于 2021-4-28 10:18
大佬我这是怎么回事啊?
没装第三方库。。。
自己pip安装一下 大佬啊,我运行就报错,如图 我看你写了个可选。。。。。。。{:301_982:} 吾爱有三 发表于 2021-4-28 11:01
我看你写了个可选。。。。。。。
可选就是没有安装就去掉相关代码啊。。。
这种报错信息下次你去百度搜一下都能看到解决方案。
页:
[1]
2