爬虫小案例-爬百度图片

用到的软件包
import os
import requests
from urllib.parse import quote
正常流程

 随便点击一个,选择标头拉到底部,User-Agent数据复制下来

 我拿的是一个接口,也可以拿别的用来获取数据

w=input('请输入要搜索的图片名:')#创建变量
    encoded_text = quote(w) #将字符串进行 URL 编码
    # f是格式化字符串的意思(ai说的),我的理解就是可以让字符串中存在变量
    url = f"https://image.baidu.com/search/acjson?tn=resultjson_com&logid=8639403618085309559&ipn=rj&ct=201326592&is=&fp=result&fr=&word={encoded_text}cg=wallpaper&queryWord={encoded_text}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=&pn={pn}&rn=30&gsm=1e&1713836271999="
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
    }
res = requests.get(url, headers=headers).json() #requests用于发起请求
    print(res)

requests可以发起不同请求,这里只用到get,携带headers这样不会被网页判定为机器人

    for v in res['data']:
        print(v)

这次我们需要爬取的图片数据存放在data中

        if v.get('thumbURL'):
            image_url = v['thumbURL']
            print(image_url)
            image_name = os.path.basename(image_url.split('?')[0] + '.jpg')

也可以那其他的链接,这里我拿的是 thumbURL中的链接
os创建图片下载链接

save_folder = "D:/图片" ##图片的保存为位置
save_path = os.path.join(save_folder, image_name)

 图片的下载和图片名字

try:
    urllib.request.urlretrieve(image_url, save_path)
    print(f"成功下载图片: {image_name}")
except Exception as e:
    print(f"下载图片 {image_name} 失败: {e}")

确保下载过程中不被打断以及下载提示

全部代码

import os
import urllib.request
import requests
from urllib.parse import quote
pn = 30
flag = True
while flag:
    w=input('请输入要搜索的图片名:')
    encoded_text = quote(w)
    print('下载包含输入的图片名的图片,可能会有些不同')
    url = f"https://image.baidu.com/search/acjson?tn=resultjson_com&logid=8639403618085309559&ipn=rj&ct=201326592&is=&fp=result&fr=&word={encoded_text}cg=wallpaper&queryWord={encoded_text}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=&pn={pn}&rn=30&gsm=1e&1713836271999="
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
        # "Referer":"https://pic.netbian.com/4k/",
    }
    # 创建保存图片的文件夹
    save_folder = "D:/图片"
    os.makedirs(save_folder, exist_ok=True)
    res = requests.get(url, headers=headers).json()
    if res['data']:
        for v in res['data']:
            if v.get('thumbURL'):
                image_url = v['thumbURL']
                image_name = os.path.basename(image_url.split('?')[0] + '.jpg')
                save_path = os.path.join(save_folder, image_name)

                try:
                    urllib.request.urlretrieve(image_url, save_path)
                    print(f"成功下载图片: {image_name}")
                except Exception as e:
                    print(f"下载图片 {image_name} 失败: {e}")
        pn += 30
    else:
        flag = False
        print('此类图片没有了')

感觉不错的可以点一个小赞

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

俺不想搬砖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值