吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4511|回复: 16
收起左侧

[Python 原创] 【Python】实现批量搜索下载Wallhaven站壁纸功能

[复制链接]
ARtcgb 发表于 2021-4-28 07:32
本帖最后由 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:

免费评分

参与人数 3吾爱币 +8 热心值 +2 收起 理由
Asy_少洋 + 2 + 1 我很赞同!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lfm333 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

吾爱有三 发表于 2021-4-28 12:07
感谢大佬,我终于成功了 成功了。由于新安装的,基本什么库都没有,我直接用的ANACONDA的库,比较全,稍微修改了一学就OK了

https://wallhaven.cc/上面的壁纸一直都是我比较喜欢的感谢大佬写的代码,让我解放双手

不成功的兄弟们,可以先看看自己的库全不全,再者就是复制的代码可能会有区别,对照一下,最后,由于这个网站不是国内的,所以有的时候你懂的!!!
1010.png
22222.png
11111.png
ccwjj 发表于 2021-4-28 07:43
lfm333 发表于 2021-4-28 08:16
yjn866y 发表于 2021-4-28 08:20
g天天学习,,,,谢谢分享
吾爱有三 发表于 2021-4-28 10:18
C:\Users\admin\Desktop\Snipaste_2021-04-28_10-16-05.png
大佬我这是怎么回事啊?

报错

报错
氵怪 发表于 2021-4-28 10:37
吾爱有三 发表于 2021-4-28 10:18
大佬我这是怎么回事啊?

百度一下就知道了
 楼主| ARtcgb 发表于 2021-4-28 10:55
吾爱有三 发表于 2021-4-28 10:18
大佬我这是怎么回事啊?

没装第三方库。。。
自己pip安装一下
吾爱有三 发表于 2021-4-28 11:00
大佬啊,我运行就报错,如图
333.png
吾爱有三 发表于 2021-4-28 11:01
我看你写了个可选。。。。。。。
 楼主| ARtcgb 发表于 2021-4-28 11:33
吾爱有三 发表于 2021-4-28 11:01
我看你写了个可选。。。。。。。

可选就是没有安装就去掉相关代码啊。。。

这种报错信息下次你去百度搜一下都能看到解决方案。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表