python试验--使用requests批量下载壁纸

这篇博客介绍了作者作为Python初学者如何使用requests库和正则表达式进行网页抓取,通过多线程批量下载壁纸的过程。作者强调了对法律规定的不了解,并简述了获取页面URL、解析HTML、提取图片URL、重命名图片及使用多线程下载的步骤。同时,为了防止频繁请求,作者还使用了随机代理和设置请求间隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于鄙人刚刚接触爬虫, 对法律要求还不是很了解, 所以分析过程就尽量简陋, 不深入分析, 只讲个大致分析思路, 请见谅

1. 先导入所需要的模块, 其中requests是获取网页必备的模块, re是正则模块(鄙人暂时只会使用正则, 请谅解), threading用来创建多线程提高下载速度, random模块是用于随机获取免费代理, time模块是用于休眠, 避免因为访问太快以至于服务器限制我们范围, 再者也可以减轻对于服务器的负担

import re
import requests
import threading
import random
import time

2. 若要批量下载图片, 首先就得要有图片所在的页面链接才行, 所以定义一个函数获取批量页面的url, 分析一下页面规律, 我害怕违法所以就不显示url, 请谅解

def url_nums(num):
    url_list = [f'https://***********.com/2/index_{i}.shtml' for i in range(2, num + 1)]
    return url_list

3. 获取到页面url之后, 我们需要获取页面的html并且对html用正则模块re来提取出我们需要的部分源码, 以便于后面提取出图片url

def html_code(url, headers, proxies):
    resp = requests.get(url, headers=headers, proxies=proxies)
    resp.encoding = 'utf-8'
    html = resp.text
    pattern = r'<html lang="en">(.*?)<nav class="paging">'
    string = html
    html_needing = re.findall(pattern, string, re.S)[0]
    return html_needing

4. 得到我们所需要的部分源码后, 我们需要进一步提取, 主要是提取出图片的url以及图片的名字, 要注意缩小范围, 防止下载到其他的不需要的图片

def img_name_url(html_needing):
    string = html_needing
    pattern1 = '<img data-src="(.*?)" alt=".*?">'
    pattern2 = '<img data-src=".*?" alt="(.*?)">'
    img_url_lists = re.findall(pattern1, string, re.S)
    name_lists = re.findall(pattern2, string, re.S)
    name_lists = [i.replace('/', '20') for i in name_lists]
    name_lists = [i[0:7] for i in name_lists]
    name_lists = [i.replace('"', '101') for i in name_lists]
    return img_url_lists, name_lists


def button_name_url(html_needing):
    string = html_needing
    pattern1 = r'<button data-src="(.*?)" data-behaviour="WALLPAPER_DOWNLOAD" data-name=".*?【.*?】"'
    pattern2 = r'<button data-src=".*?" data-behaviour="WALLPAPER_DOWNLOAD" data-nam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值