吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3291|回复: 29
收起左侧

[Python 原创] 小白第一次尝试爬取电脑壁纸

[复制链接]
PLA-heart 发表于 2022-12-27 19:55
本帖最后由 PLA-heart 于 2022-12-27 20:04 编辑

作为一个潜水好久的小白,最近突然想搞点壁纸,就去学了一下爬虫,实现的是爬取wallhaven该网站的壁纸,因为不想要其他像手机端之类的的壁纸,就把壁纸长度限制在了我电脑的分辨率1920x1080,其他参数想改的可以根据网页访问请求信息自己修改,可以去浏览器重新获取一下菜鸡一个,请大家多多指教{:1_893:}  


如果代码不可用了,可能是因为header里面的cookie失效了,可以找图片中的修改试试
QQ截图20221227195909.png
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :wallhaven_demo.py
# @Time      :2022/12/27 11:51
# @Author    :Mr_Ren
import os
import time

import requests
from pyquery import PyQuery
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
# os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # 这是默认的显示等级,忽略所有信息
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2'  # 忽略 warning 和 Error
# os.environ["TF_CPP_MIN_LOG_LEVEL"]='3' # 忽略 Error
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
    "cookie":"_pk_id.1.01b8=a8be8d7f7ae37b1a.1672112746.; _pk_ses.1.01b8=1; XSRF-TOKEN=eyJpdiI6InJkYVFyZ0tJZHlUMmxKZCtDRjNhS0E9PSIsInZhbHVlIjoiR3paVG5KUnNOaTg1a3RmNHF6NXJqaFpsVHNUeXo5YWY2RzlDOFJ4b1dCeDdvV29CMDNPZ29zWWhqUld3TEgyUiIsIm1hYyI6ImQyM2EwZjQwYWU4YjM1N2E2ZDk2MTk1ZDZmMTY4YWQ2ZDVhZjRkZTE4NDM4ZDFmN2E1OGQ5YWU3NjQ1NzE4ODUifQ==; wallhaven_session=eyJpdiI6IndSZHJXYklNME00R25ScVFhNEN5cUE9PSIsInZhbHVlIjoiZGxJa290QkpkTmRaZ3NWZW5GbkR1aE8zZ1hMNE02bjFzWHJISkRBdGVqaW1XUUFFRGFLNDlcL2lQTlZpWVZnOFoiLCJtYWMiOiIyYTg4Y2MzODY2ZTEwYjE4ZjkyMzEzMjNjNDE3ZmNjNGZiYzhiMWY1NDdjYWJiZDA3YWM2ZWU2OTc5YjkwZjA0In0="
}
#设置参数 比如分辨率 其他的可自行探索
params = {
    "resolutions":"1920x1080"
}

# 获取html
def get_html_info(page):
    # f是format函数的缩写, 用于格式化输出。
    url = f'https://wallhaven.cc/search?categories=111&purity=100&topRange=1M&sorting=toplist&order=desc&page={page}'
    resp = requests.get(url,headers=headers,params=params)
    resp_html = resp.content
    # print(resp_html)
    return PyQuery(resp_html)

if __name__ == "__main__":
    #要爬取的页数
    count = 10
    #图片名
    cnt = 1
    for i in range(count):

        html = get_html_info(i)

        pic_urls = []
        # 获取当前页所有缩略图包含的信息
        items = html("#thumbs >  .thumb-listing-page > ul > li").items()

        for item in items:
            # 获取存放在缩略图信息中的缩略图原图网址
            url = item("a").attr("href")
            pic_urls.append(url)
            # print(url)
        for pic_url in pic_urls:
            resp = requests.get(pic_url, headers=headers)
            html = PyQuery(resp.content)
            # 获取id为wallpaper的img标签里面是src属性 也就是原始图片
            final_url = html("#wallpaper").attr("src")
            pic = requests.get(final_url, headers=headers).content
            if not os.path.exists("Wallhaven"):
                os.mkdir("Wallhaven")
            # 因为爬取的图片名字是乱字母,就以数字作为名
            with open("Wallhaven/" + str(cnt) + final_url[-4:], "wb") as f:
                f.write(pic)

                print("第" + str(cnt) + "张图片下载完毕")
                cnt = cnt + 1
        #防止一次性爬太多 ip被封了
        time.sleep(2)
    print("爬取结束")

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
hubohang + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

涛之雨 发表于 2022-12-28 07:59
似乎不需要cookie啊。。。

而且你爬的是缩略图啊。。。。
缩略图:https://th.wallhaven.cc/small/9d/9d6wg8.jpg
原图:https://w.wallhaven.cc/full/9d/wallhaven-9d6wg8.jpg
找不同替换一下。。。。
xinliu 发表于 2022-12-28 12:02
llyaomo 发表于 2022-12-28 09:03
很棒,必应壁纸是不是还有更高的分辨率,1080当下略微不足

可以看看api文档
https://www.apifox.cn/apidoc/shared-961673e6-161d-4129-88b6-e7b0a3b86cf1/doc-1696238
xinliu 发表于 2022-12-27 23:47
欢迎来爬我的壁纸网站:https://www.bimg.cc/

免费评分

参与人数 1热心值 +1 收起 理由
jayoungzea + 1 热心回复! 有4K的壁纸推荐吗?

查看全部评分

chesion001 发表于 2022-12-28 00:03
xinliu 发表于 2022-12-27 23:47
欢迎来爬我的壁纸网站:https://www.bimg.cc/

你这里的壁纸简直太棒了。不用到处找壁纸了
King1993 发表于 2022-12-28 07:59
很棒,谢谢
uno668 发表于 2022-12-28 08:17
好东西,谢谢分享
ofw 发表于 2022-12-28 08:19
xinliu 发表于 2022-12-27 23:47
欢迎来爬我的壁纸网站:https://www.bimg.cc/

通过JS文件动态加载的
markdik31 发表于 2022-12-28 08:21
谢谢大神的教导,分享
kdroid27 发表于 2022-12-28 08:28
很有用,学习一下
zrfxcndsxue0606 发表于 2022-12-28 08:40

谢谢大神的教导,分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 03:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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