Python爬虫实战:下载高清壁纸 

Python爬虫实战:下载高清壁纸 

前言

这个脚本能够从指定的网页上获取壁纸图片及其描述,并将它们保存到本地目录中。让我逐步解析这段代码的各个部分。

一:导入必要的库

import requests
import re
import os

这段代码导入了三个关键库:
– `requests`:用于发送HTTP请求和获取网页内容
– `re`:用于进行正则表达式匹配
– `os`:用于文件和目录操作

二:定义主函数

def download_wallpapers(url, save_dir):

这个函数接受两个参数:
– `url`:要爬取的网页地址
– `save_dir`:保存壁纸的本地目录

三:发送HTTP请求并获取网页内容

    # 发送HTTP请求
    response = requests.get(url)
    html_content = response.text

这部分使用`requests.get()`方法发送GET请求到指定URL,并获取响应内容。

四:使用正则表达式提取信息

# 使用正则表达式查找所有图片URL及名称
    img_pattern = r'<a href="(.*?)" id="changeTxt2"'
    img_urls = re.findall(img_pattern, html_content)
    name_pattern = r'作品描述:<h1>(.*?)</h1>'
    img_name = re.findall(name_pattern, html_content)[0]

这里使用两个正则表达式:
– 第一个用于匹配图片URL
– 第二个用于匹配图片描述(作为文件名)

五:创建保存目录

 # 创建保存目录
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

如果指定的保存目录不存在,这段代码会创建它。

六:下载并保存图片

# 下载图片
    for img_url in img_urls:
        if not img_url.startswith('http'):
            img_url = url + img_url
        # 确保文件名有.png后缀
        if not img_name.lower().endswith('.png'):
            img_name = img_name + '.png'

        filename = os.path.join(save_dir, img_name)

        try:
            with open(filename, 'wb') as f:
                img_data = requests.get(img_url).content
                f.write(img_data)

            print(f"Downloaded: {filename}")
        except Exception as e:
            print(f"Error downloading {img_url}: {str(e)}")

这个循环遍历所有找到的图片URL:

  • 确保URL是完整的
  • 构造完整的文件路径
  • 尝试下载图片并保存到文件
  • 打印成功或失败信息
  • 如果图片没有后缀默认加一个

七:主程序调用

  url = "https://www.bizhihui.com/p/16742.html"  # 替换为您想爬取的网站URL
    save_directory = "wallpapers"  # 保存壁纸的目录

    download_wallpapers(url, save_directory)

最后,这部分代码设置了目标URL和保存目录,然后调用`download_wallpapers`函数来执行爬虫任务。

整个代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/7/12 下午8:39
# [url=home.php?mod=space&uid=686208]@AuThor[/url]  : 心中之火
# [url=home.php?mod=space&uid=267492]@file[/url]    : 壁纸汇.py
# @Software: PyCharm
import requests
import re
import os


def download_wallpapers(url, save_dir):
    # 发送HTTP请求
    response = requests.get(url)
    html_content = response.text
    # print(html_content)
    # 使用正则表达式查找所有图片URL及名称
    img_pattern = r'<a href="(.*?)" id="changeTxt2"'
    img_urls = re.findall(img_pattern, html_content)
    name_pattern = r'作品描述:<h1>(.*?)</h1>'
    img_name = re.findall(name_pattern, html_content)[0]

    # 创建保存目录
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    # 下载图片
    for img_url in img_urls:
        if not img_url.startswith('http'):
            img_url = url + img_url
        # 确保文件名有.png后缀
        if not img_name.lower().endswith('.png'):
            img_name = img_name + '.png'

        filename = os.path.join(save_dir, img_name)

        try:
            with open(filename, 'wb') as f:
                img_data = requests.get(img_url).content
                f.write(img_data)

            print(f"Downloaded: {filename}")
        except Exception as e:
            print(f"Error downloading {img_url}: {str(e)}")


if __name__ == '__main__':
    url = "https://www.bizhihui.com/p/16742.html"  # 替换为您想爬取的网站URL
    save_directory = "wallpapers"  # 保存壁纸的目录

    download_wallpapers(url, save_directory)
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容