在美桌下载某一个系列的图片

1.确定目标网页
2.发送请求
3.解析数据
4.保存数据
5.下载多张图片

1.确定目标网页,确定爬取的url路径,headers参数

 url = 'http://www.win4000.com/wallpaper_detail_178645.html' 
 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}

2.发送请求–requests 模拟浏览器发送请求 获取响应数据

response = requests.get(headers=headers, url=url)
print(response)

若响应为下图所示,则表示我们我们成功获取数据在这里插入图片描述

3.解析数据
观察我们的网页,用正则表达式匹配获取图片的url在这里插入图片描述

 result = re.findall('<img class="pic-large" src="(.*?)" alt=".*" title=".*"/>', response.text, re.S)
 print(result)

打印result的结果显示,此时已经获取到图片的url
因为图片是二进制数据,所以我们用content获取到该图片的数据

response_img = requests.get(result[0]).content
print(response_img)

用获取到的url最后面一段作为该图片的name。

file_name = result[0].split('/')[-1]

4.保存数据

保存数据到本地文件

with open('picture1_3\\' + file_name, mode='wb')as f:
    f.write(response_img)

此时图片就保存到本地文件了在这里插入图片描述
5.下载多张图片
同时下载多张图片需要对比图片数据的差别,找到差别一起处理才能同时下载多张图片。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过对比我们可以发现,这一系列的图片是通过该url最后一位数字进行变化的。然后我们可以通过循环的方式将图片一起下载。这个
下面是完整代码展示

import requests
import re
import os


if not os.path.exists('picture1_3'):
    os.makedirs('picture1_3')

for page in range(1, 8):
    url = 'http://www.win4000.com/wallpaper_detail_178645_{}.html'.format(page)
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
    response = requests.get(headers=headers, url=url)
    # print(response)
    result = re.findall('<img class="pic-large" src="(.*?)" alt=".*" title=".*"/>', response.text, re.S)
    print(result)

    response_img = requests.get(result[0]).content
    # print(response_img)
    file_name = result[0].split('/')[-1]
    print(file_name)
    with open('picture1_3\\' + file_name, mode='wb')as f:
        f.write(response_img)
        print(file_name + '下载完成')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鎮後生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值