实战1-批量爬取百度图片(上)

news2024/9/22 8:28:11

任务需求:输入关键字下载100个图片保存到本地,每个关键字单独存放一个文件夹(GUI版)

任务描述:当输入关键字时会爬取100个与关键词有关的图片到本地每个关键词单独保存到一个文件夹中,比如说我输入黑客下载了100个关于黑客的图片这些图片都保存到“黑客”文件夹,然后输入python会爬取100个与python有关的图片保存到本地的"python"文件夹中

pip install 模块名 [-i Simple Index]

pip install pyinstaller 打包程序

pip install PyQt5

import requests
from urllib.parse import quote
from pprint import pprint
from pdb import set_trace
class 批量爬取百度图片:
    headers = {
        'Accept': 'text/plain, */*; q=0.01',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        # 'Cookie': 'BDqhfp=%E9%BB%91%E5%AE%A2%26%26NaN-1undefined%26%265916%26%265; BIDUPSID=E695E9B2AF2F6BFFED9BD684584A8956; PSTM=1712380467; BAIDUID=34F3B544DDD48A4C76CCDD75A6DB9841:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=40299_40377_40416_40459_40439_40510_40446_60026_60032_60046_40080; BAIDUID_BFESS=34F3B544DDD48A4C76CCDD75A6DB9841:FG=1; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=null; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; ab_sr=1.0.1_Y2E1NjA2ODI1NmIyMWE0OGY3Y2Y5YzA1ZWE1MzBkY2YwMGQ0M2RjYWE5Mjk3YjdiNTUwMmEwZTk2ZGNiODZkNGI0NWVmYzAxODEwNTk5ZjA2NTA4ZTg0OTZhZjAzYjcwNjM3NjU5M2Y2MzY5YTRjNzJhY2MxNDc5MmMzN2ZhMTUwYTQ4MDVlZDViNWZlNDNhZGE1NjRlYjMyOWYwMzY1Mw==',
        'Referer': 'https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwxLDMsMiw2LDQsNSw4LDcsOQ%3D%3D&word=%E9%BB%91%E5%AE%A2',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest',
        'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }
    def __init__(self):
        self.cont=1
        url='https://image.baidu.com/search/acjson'
        word=quote('黑客')
        li=self.发送请求(url,word,30)
        
        for i in li:
            #i就是图片链接
            self.发送请求(url=i)
    def 发送请求(self,url,word='黑客',pn=30):
        if 'JPEG' in url:
            response=requests.get(url,headers=self.headers).content
            self.存储数据(response)
        else:
            params = {
              "tn": "resultjson_com",
              "logid": "7871683271133482576",
              "ipn": "rj",
              "ct": "201326592",
              "is": "",
              "fp": "result",
              "fr": "",
              "word": word,
              "queryWord": word,
              "cl": "2",
              "lm": "-1",
              "ie": "utf-8",
              "oe": "utf-8",
              "adpicid": "",
              "st": "",
              "z": "",
              "ic": "",
              "hd": "",
              "latest": "",
              "copyright": "",
              "s": "",
              "se": "",
              "tab": "",
              "width": "",
              "height": "",
              "face": "",
              "istype": "",
              "qc": "",
              "nc": "1",
              "expermode": "",
              "nojc": "",
              "isAsync": "",
              "pn": pn,
              "rn": "30",
            }
            try:    
                res = requests.get(url, params=params, headers=self.headers).json()
                return self.解析源代码(res)
            except:
                pass
                
    def 解析源代码(self,res):
        if res:
            li=[]
            for i in res['data']:
                if i.get('hoverURL',False):li.append(i.get('hoverURL',False))
            return li
        else:
            return False
    def 存储数据(self,res):
        with open(str(self.cont)+'.jpg','wb') as f:
            f.write(res)
批量爬取百度图片()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1605781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技术变现之道】如何打造IT行业的超级个体?

前言 在当今的数字化时代,IT行业蓬勃发展,为具备技术专长的个人提供了无限的可能性。想要成为IT行业的超级个体,实现知识与技能的变现吗?以下是一些高效途径,助你一臂之力! 1. 独立接单外包 1&#xff09…

C语言—常用字符串函数剖析

字符串函数 cplusplus.com/reference/cstring/ 更多没有总结到的函数大家可以自行查阅 这篇文章只是把最需要知道的函数做一个总结 strlen size_t strlen ( const char * str );字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的…

Android开发基础:Activity之间的跳转 向下一个Activity传递数据 给上一个Activity返回数据

目录 一,使用Intent在Activity之间跳转 1.显示使用Intent 2.隐式使用Intent 二,携带数据的跳转 1.Bundle 三,返回数据给上一个Activity 1.registerForActivityResult 一,使用Intent在Activity之间跳转 一个Android应用中包…

语言的未来:深度学习在自然语言处理中的革命

语言的未来:深度学习在自然语言处理中的革命 1 引言 自古以来,语言就是人类表达思想、传递信息、进行社会互动的基石。语言的复杂性既体现在其变化多端的语义、句法和语用层面,同时也反映在人类如何理解和产生自然语言的深奥之中。在这一节中…

java项目的构建工具-Maven

黑马程序员JavaWeb开发教程 文章目录 一、概述1、介绍(1)介绍(2)Maven的作用(3)官网(4)仓库 2、安装 二、IDEA 集成 Maven1、配置Maven环境2、创建Maven项目(1&#xff0…

java 红黑树

01.红黑树的定义: 每一个结点有五个属性:

Jmeter测试学习笔记

第一章 jmeter基础知识 一.Jmeter工具中的组件 1.测试计划:Jmeter测试的起点。容器。 2.线程组:代表一定的用户 3.取样器:发送请求的最小单元 4.逻辑控制器:处理请求逻辑 5.前置处理器:请求之前的操作 6.后置处…

docker部署的nginx配置ssl证书https

申请ssl证书,已腾讯的免费证书为例 2.上传证书到linux服务器 2.1 映射ssql目录 首先确保容器命令已映射宿主机目录,不一定是ssl,也可以是其他路径。 2.2 上传文件到指定路径 以我映射的ssl路径为例,我上传到宿主机的 /usr/local…

字母加密(C语言)

一、题目; 为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W…

【Shell语言】linux中awk命令

linux中awk命令 看这里放声嘶吼谁也不舍得沉默 宽阔也抓不住我下一秒钟的echo ——《暂时失控》苏打绿 awk命令简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 B…

密码学 | 数字签名 + 数字证书

🥑原文:数字签名和数字证书的原理解读 - 知乎 🥑声明:后文图中若未明确指明,默认是 Bob 的公钥或私钥。 Step1:Bob 有两把钥匙,一把是公钥,另一把是私钥。 Step2:Bob 把…

Redis中的BigKey

Redis中的BigKey 文章目录 Redis中的BigKey什么是BigKey?BigKey的危害找到Bigkey删除BigKey优化BigKeyBigKey对持久化的影响对AOF日志的影响对AOF重写和RDB的影响 什么是BigKey? 大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。…

Docker操作容器打包(commit),压缩(save),挂载(load)

文章目录 前言一、容器打包二、将镜像压缩成tar包三、将tar包挂载为镜像结束 前言 将容器打包成镜像时,你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式,…

使用自己训练好的模型YOLOv8进行X-AnyLabeling自动标注

目录 1. 下载项目2. 创建环境3. 运行程序3.1 自行下载和添加官方模型3.2 使用自己训练好的模型标注自己的数据集 本机环境:win 10, GPU 1. 下载项目 git clone https://github.com/CVHub520/X-AnyLabeling.git2. 创建环境 仔细查看项目的README文件 …

FastGPT+ChatGLM3本地部署

FastGPTChatGLM本地部署 本地部署硬性要求:显存13g以上 关于环境的安装就不多赘述,conda pip 可以解决大部分问题 ChatGLM本地运行 m3e-basechatglm3-6b 在huggingface上可以下载上述模型,如果没有梯子可以使用huggingface镜像 从git…

Linux shell 脚本基础与部署SpringCloud实战

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Java学习笔记零基础入门1

目录 第一章 Java概述 1.1 什么是程序 1.2 Java 技术体系平台 1.3 Java 重要特点 1.4 Java 的开发工具 4.1 工具选择 1.5 Java 运行机制及运行过程 5.1 Java 语言的特点:跨平台性 5.2 Java 核心机制-Java 虚拟机 [JVMjavavirtual machine] 1.6 什么是JDK&…

C++ PTA 天梯赛 L1-003 个位数统计 L1-005 考试座位号 【范围for循环】【. 与 -> 访问成员】

L1-003 个位数统计 最后一个测试点考察的是当N特别大时,如果用整数存会数据溢出,改成字符串可以增大范围 知识点: 1.范围 for 循环,它对于遍历容器(比如字符串)中的元素非常方便。在这里,N 是…

JavaEE初阶Day 10:多线程(8)

目录 Day 10:多线程(8)单例模式阻塞队列1. 生产者消费者模型1.1 生产者消费者模型解耦合1.2 生产者消费者模型削峰填谷 2. 生产者消费者代码3. 阻塞队列实现 Day 10:多线程(8) 单例模式 单例模式&#xf…

2024经常用且免费的10个网盘对比,看看哪个比较好用!

网盘在我们的工作和学习中经常会用到,也是存储资料的必备工具,有了它,我们就不用走到哪都带着移动硬盘了,而目前市场上的主流网盘还有数十款,其中有免费的也有付费的,各家不一,今天小编就来为您…