如何用Python自动下载想要的百度图片

这个例子网上很多,我主要参考了:
https://www.geek-share.com/detail/2788246674.html
https://www.zhihu.com/question/27621722/answers/updated
https://blog.csdn.net/weixin_44318830/article/details/102807980
https://www.jianshu.com/p/33bee611fa7d
很多这类的例子,本次实验是根据输入的内容,来自动下载百度搜索的图片。

1、导入库

# -*- encoding: utf-8 -*-
import requests
import re
import os

2、定义自动下载函数

#  定义下载图片的方法
def downloadPic(url, path):
    i = 0   #计算和图片命名
    html = requests.get(url).text 
    pic_url = re.findall('"objURL":"(.*?)",', html, re.S)

    for each in pic_url:
        print("正在下载第" + str(i) + "张图片,图片地址:" + each)
        try:
            # 可能有些图片存在网址打不开的情况,这里设置一个5秒的超时控制
            pic = requests.get(each, timeout=5)
        except Exception:  # 出现异常直接跳过
            print("Error! 当前图片无法下载")
            continue  # 跳过本次循环

        #  定义变量保存图片的路径
        string = path + "/" + str(i) + ".jpg"
        fp = open(string, 'wb')
        fp.write(pic.content)
        fp.close()
        i += 1
 html = requests.get(url).text 

上面这句话表示获取网页内容

 pic_url = re.findall('"objURL":"(.*?)",', html, re.S)

这句话表示用正则表达式去匹配图片的链接,为什么要这么写呢?https://juejin.im/post/5a75c4cd5188257a814ce496,这个链接有解释。意思就是说,通过开发者F12工具很难找到图片下载的链接,我们需要网页源代码来寻找,就很方便,因为前面都是"objURL",直接搜索就可以。例如,我自己查看网页源代码如下:
在这里插入图片描述
此时最好用源代码来查看,如果用开发者模式F12,用bs4来查找就很困难。

3、程序入口

if __name__ == '__main__':  # 主程序
    name = input("请输入您想要下载的图片:")
    #  先根据搜索的关键字判断存放该类别的文件夹是否存在,不存在则创建
    path = r"C:/spyder/baiduImg/imges/" + name
    if not os.path.exists(path):
        os.mkdir(path)
    #  根据输入的内容构建url列表推导式,百度图片搜索每页20张图片
    urls = [
        'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + name +
        '&ct=201326592&v=flip&pn={}'.format(str(i)) for i in range(0,100,20)] #这里自己定义
    for url in urls:
        downloadPic(url, path)
    print("下载完成!")

最后便可以在电脑上看下载的图片了。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值