var code = “45f4267f-9476-44ca-ac68-6d32aad2d4e1”

源码地址:https://gitee.com/myrensheng/data_analysis

import os
import string
import requests # 百度图片搜索地址
url = "https://image.baidu.com/search/acjson"
# 构造请求头数据
header = {
'Accept': 'text/plain, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Host': 'image.baidu.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
# 构造请求参数
param = {
'tn': 'resultjson_com',
'ipn': 'rj',
'ct': '201326592',
'fp': 'result',
'queryWord': '',
'cl': '2',
'lm': '-1',
'ie': 'utf-8',
'oe': 'utf-8',
'st': '-1',
'ic': '0',
'word': '',
'face': '0',
'istype': '2',
'nc': '1',
'pn': '60',
'rn': '30',
'gsm': '1e',
} def get_json(query_word=None, page_num=None):
"""
根据查询的关键词及查询的页面返回 json 数据
:param query_word: 输入的关键词
:param page_num: 查询的页面数
:return: 对应的 json 数据
"""
# 参数列表中添加 queryWord 关键词
param["queryWord"] = query_word
param["word"] = query_word
# 参数列表中添加 pn 关键词
param["pn"] = f'{30 * page_num}'
# 请求百度图片网站,将返回的 json 数据转换为 dict 数据
res = requests.get(url=url, headers=header, params=param)
res_dict = dict(res.json())
return res_dict def save_picture(query_word=None, pic_name=None, pic_url=None):
"""
将图片保存在以 query_word 为名创建新的文件夹
:param query_word:输入的关键词
:param pic_name: json 中解析出来的图片名称
:param pic_url: json 中解析出来的图片地址
:return: None
"""
# 获取当前 py 文件所在的绝对地址
cwd = os.getcwd()
# 拼接 images 文件夹地址
images_path = os.path.join(cwd, "images")
query_word_path = os.path.join(images_path, query_word)
# 如果没有 images 文件夹,就新建一个
if "images" not in os.listdir(cwd):
os.mkdir(images_path)
# 在 images 文件夹下,新建以 query_word 为名的文件夹
if query_word not in os.listdir(images_path):
os.mkdir(query_word_path)
# 根据 pic_url 读取图片
pic = requests.get(pic_url, stream=True)
# 构造图片地址
pic_path = os.path.join(query_word_path, pic_name)
# 保存图片
with open(pic_path, "wb") as f:
for c in pic.iter_content(chunk_size=10240):
f.write(c) def get_pic_info(res=None):
"""
解析 get_json 函数返回的 json 数据
:param res: get_json 函数返回的 json 数据
:return: 重新构造的图片数据,包含图片名称,图片地址
"""
# 多张图片的信息列表
pic_info = []
# 图片数据存放在 data 中
for data in res["data"]:
# 获取图片名称
pic_name = data.get("fromPageTitleEnc", None)
# 获取图片地址
pic_url = data.get("hoverURL", None)
# 判断图片名称和图片地址是否存在
if pic_name and pic_url:
# 替换图片名称中的特殊字符
pic_name = pic_name.replace(" ", '')
for p in string.punctuation:
pic_name = pic_name.replace(p, '')
# 用图片名称命名图片
if "png" in pic_url:
pic_name += ".png"
if "jpg" in pic_url:
pic_name += ".jpg"
if "gif" in pic_url:
pic_name += ".gif"
if "jpeg" in pic_url:
pic_name += ".jpeg"
if "bmp" in pic_url:
pic_name += ".bmp"
else:
pic_name += ".jpg"
pic_info.append({"pic_name": pic_name, "pic_url": pic_url})
return pic_info def main():
# 程序运行的主函数
while True:
# 多次下载,直到输入 q 退出
query_word = str(input("输入要下载的图片名(q退出):"))
if query_word == "q":
break
while True:
# 当输入的数量不为整数,循环输入
pic_num = input("输入需要下载的页数(q退出):")
if pic_num == "q":
break
try:
pic_num = int(pic_num)
except:
continue
# 下载量不超过 30 就下载第一页图片
page_num = 1 if int(pic_num / 30) == 0 else int(pic_num / 30)
for i in range(1, page_num + 1):
# 获取 json 数据
res = get_json(query_word=query_word, page_num=i)
# 获取图片名和图片地址
pic_info = get_pic_info(res=res)
# 保存图片
for pic in pic_info:
print(pic["pic_name"], "下载完成")
save_picture(query_word=query_word, pic_name=pic["pic_name"], pic_url=pic["pic_url"])
break if __name__ == '__main__':
main()

requests库获取指定关键词的图片,并保存到本地的更多相关文章

  1. c# 应用NPOI 获取Excel中的图片,保存至本地的算法

    要求:读取excel中的图片,保存到指定路径 思路:  利用NPOI中 GetAllPictures()方法获取图片信息 步骤: 1.新建一个Windows窗体应用程序 2.桌面新建一个excel,贴 ...

  2. php获取网页中图片并保存到本地的代码

    php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: <?php /** * 获取网页中图片,并保存至本地 * by www.jbxue.com */ header(" ...

  3. php获取网页中图片并保存到本地

    php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: save_img("http://www.jbxue.com" ?>

  4. python爬取某个网站的图片并保存到本地

    python爬取某个网站的图片并保存到本地 #coding:utf- import urllib import re import sys reload(sys) sys.setdefaultenco ...

  5. 微信小程序生成分享图片,保存到本地

    1.页面 <canvas canvas-id="shareCanvas" style="width:600px;height:900px">< ...

  6. Python:爬取网站图片并保存至本地

    Python:爬取网页图片并保存至本地 python3爬取网页中的图片到本地的过程如下: 1.爬取网页 2.获取图片地址 3.爬取图片内容并保存到本地 实例:爬取百度贴吧首页图片. 代码如下: imp ...

  7. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  8. 使用URLConnection下载文件或图片并保存到本地

    有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...

  9. 吴裕雄--天生自然python学习笔记:编写网络爬虫代码获取指定网站的图片

    我们经常会在网上搜索井下载图片,然而一张一张地下载就太麻烦了,本案例 就是通过网络爬虫技术, 一次性下载该网站所有的图片并保存 . 网站图片下载并保存 将指定网站的 .jpg 和 .png 格式的图片 ...

  10. php将远程图片下载保存到本地

    /* *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getIma ...

随机推荐

  1. python字符串表达式求值

    背景: 在开发的过程中涉及到动态的根据公式计算数值 技术上选择了python a= eval("1+2*(3+1)") print(a)

  2. HOMER docker版本安装详细流程

    概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...

  3. JS 格式化时间字符串

    // 格式时间字符串 formatDateTimeStr(date, type) { if (date === '' || !date) { return '' } var dateObject = ...

  4. ubuntu安装ROBOWARE

    https://github.com/tonyrobotics/RoboWare/ https://blog.csdn.net/lixujie666/article/details/80139112 ...

  5. 解决Linux上tomcat解析war包中文文件乱码

    解决Linux上tomcat解析war包中文文件乱码 第一步 编辑tomcat/conf server.xml vim /usr/local/src/tomcat/conf/server.xml us ...

  6. Quartz.Net 主要概念介绍和吐槽

    我们经常遇到需要定时执行某些任务的情况,比如清理缓存.异步结果轮询等,如果不打算造轮子,那么选择一款合适的定时任务组件就很关键了.所幸,.Net 世界中的选项并不多:) 选型 主要有以下四款: Qua ...

  7. nodejs pm2 详解

    一.PM2是什么 pm2是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡.它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理.监控功能.并且 ...

  8. ChatGPT强势爆红,背后的技术原理是?一文轻松搞懂!

    目录 什么是ChatGPT? OpenAI 背后的原理和发展历程 带来的争议和挑战 尾语 作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.源码解析.科技故事.项目 ...

  9. Qt-FFmpeg开发-视频播放【软解码】(1)

    Qt-FFmpeg开发-视频播放[软解码] 目录 Qt-FFmpeg开发-视频播放[软解码] 1.概述 2.实现效果 3.FFmpeg软解码流程 4.主要代码 6.完整源代码 更多精彩内容 个人内容分 ...

  10. 简单介绍Python中如何给字典设置默认值

    这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 Python字典设置默认值 我们都知道,在 Python 的字 ...