import requests
from bs4 import BeautifulSoup
import os

def download(url):
    res = requests.get(url)
    img_data = res.content
    filename = os.path.join('img1', url.split('/')[-1])
    if not os.path.exists(filename):
        with open(filename, 'wb') as f:
            f.write(img_data)

def get_html():
    for i in range(3, 20):  # 获取第2到19页的图片
        # 构建页面URL
        url = f'http://www.netbian.com/index_{i}.htm'
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
        
        # 发送请求获取页面内容
        res = requests.get(url, headers=headers)
        res.encoding = 'gbk'  # 设置编码方式
        
        # 检查请求是否成功
        if res.status_code == 200:
            html = res.text 
            
            # 使用BeautifulSoup解析HTML
            soup = BeautifulSoup(html, 'lxml')
            all_list = soup.find(class_='list')
            all_imgs = all_list.find_all('img')
            
            # 创建图片保存目录
            if not os.path.exists('img1'):
                os.makedirs('img1')
            
            # 下载图片
            for img in all_imgs:
                src = img['src']
                download(src)

if __name__ == '__main__':
    get_html()

代码解释:

  1. 导入必要的库:

    • requests: 用于发送HTTP请求获取网页内容。
    • BeautifulSoup: 用于解析HTML网页,提取所需信息。
    • os: 用于创建文件夹和处理文件路径。
  2. download(url) 函数:

    • 接收图片URL作为参数。
    • 使用requests.get()方法发送GET请求获取图片数据。
    • 使用os.path.join()构建图片保存路径,并使用os.path.exists()检查文件是否存在,避免重复下载。
    • 使用open(filename, 'wb')以二进制写入模式打开文件,将图片数据写入文件。
  3. get_html() 函数:

    • 使用循环遍历目标网页的页码范围。
    • 构建目标网页的URL,并设置请求头信息,模拟浏览器访问。
    • 使用requests.get()发送GET请求获取网页HTML内容。
    • 使用res.encoding = 'gbk'设置编码方式,确保正确解析中文内容。
    • 使用BeautifulSoup(html, 'lxml')将HTML内容解析为BeautifulSoup对象。
    • 使用soup.find()soup.find_all()方法查找包含图片链接的HTML元素,提取图片URL。
    • 循环遍历所有图片URL,调用download()函数下载图片。

修改代码并保持功能不变的例子:

  • 可以修改图片保存的文件夹名称,例如将 'img1' 改为 'wallpapers'
  • 可以修改请求头信息,例如使用不同的User-Agent字符串。
  • 可以添加一些打印语句,用于在控制台输出程序运行进度或调试信息。

请注意,爬取网站信息需要遵守网站的robots.txt协议和相关法律法规。

Python爬虫实战:使用requests和BeautifulSoup库批量下载高清壁纸

原文地址: http://www.cveoy.top/t/topic/fR7x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录