前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Python 爬取故宫壁纸

使用 Python 爬取故宫壁纸

作者头像
OhhhCKY
发布2022-12-28 16:46:22
4820
发布2022-12-28 16:46:22
举报
文章被收录于专栏:YFun's BlogYFun's Blog

我非常喜欢故宫壁纸,但是一张一张下载的速度就太慢了。

于是,我就写了个简单的 Python 小程序自动爬取故宫壁纸。

代码

首先,我们通过简单的查看,知道故宫壁纸的页面并没有使用 JavaScript 载入。

但是故宫壁纸很多,所以还需要分类。

故宫壁纸大多都是以分类开头,如 爱上紫禁城 紫藤, 清 虚谷紫藤金鱼图轴(局部) 等等,所以一般只需要做个简单的 startswith() 判断就 OK 了。

很多壁纸的标题都是一样的,所以还可以使用 random 库在文件名末尾追加一个随机数。

代码语言:javascript
复制
import requests, bs4, time, random
path = "./wallpaper/爱上紫禁城"

catch = 0

for i in range(1, 119):
    # 组合请求 URL
    url = "https://www.dpm.org.cn/lights/royal/p/{}.html".format(i)
    # 发送请求
    response = requests.get(url)
    # 设定页面编码为 UTF-8
    response.encoding = "UTF-8"
    # 从 HTML 中解析数据
    soup = bs4.BeautifulSoup(response.text, "lxml")
    image = soup.find_all(name="div", class_="pic")
    # 循环输出图片
    for n in image:
        catch = catch + 1
        # 获得壁纸名称
        # 分类,不是以【爱上紫禁城】开头的壁纸都忽略
        img_name = n.a.img["title"]
        if img_name.startswith("明"):
            print("{}. {}".format(catch, n.a.img["title"]))
            # 组合获得壁纸页面
            url_1080 = "https://www.dpm.org.cn" + n.a["href"]
            # 请求高清版网页
            response_img = requests.get(url_1080)
            # 再次解析
            soup_img = bs4.BeautifulSoup(response_img.text, "lxml")
            # 获取页面中的图片
            data = soup_img.find_all(name="img")[0]
            # 获得壁纸图片的链接
            img_url = data["src"]
            # 保存图片
            pic = requests.get(img_url).content
            file_name = path + img_name + "-" + str(random.randint(100000, 999999)) + ".jpg"
            # 写入文件
            with open(file_name, "wb") as file:
                file.write(pic)
        
        else:
            print("!Ignore: " + img_name)

我把一些我下载下来的壁纸放在了 这里,可以直接预览并下载。

OK,又水了一篇文(

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档