文章目录

  • 一、前言
  • 二、需要导入的库
  • 三、实现过程
    • 1、下载链接分析
    • 2、代码分析
    • 3、完整代码
  • 四、Blogger's speech

一、前言

之前爬取了很多静态网页的内容,包括:小说、图片等等,今天我来尝试一下动态网页的爬取。众所周知,百度图片就是一个动态网页。那么,冲!冲!!冲!!!

二、需要导入的库

import requests
import json
import os

三、实现过程

1、下载链接分析

首先,打开百度,搜索一个内容,这里搜索的是男神(本人 )——彭于晏

然后,打开抓包工具,选择XHR选项,按Ctrl+R,然后你会发现,随着你鼠标的滑动,右侧会出现一个又一个的数据包。

(这里没滑动太多,一开始因为滑动太多,录的GIF超5M了)

然后,选一个包,查看它的headers,如图:

截取之后,粘贴在记事本上,作为一个URL,后文会用到。

这里有很多很多的参数,我也不知道具体哪些是可以忽略的,后文就索性全复制下来了,具体看后文。

到这里,能够直接观察到的内容就结束了,接下来,借助代码,帮我们打开另一个世界的大门

冲就完事了!

2、代码分析

首先:把上述中的“其它参数”组在一起。

自己做的话,最好复制自己的“其它参数”。

之后,我们可以先提取一下试试,并且把编码格式改成'utf-8'

 url = 'https://image.baidu.com/search/acjson?'param = {'tn': 'resultjson_com','logid': ' 7517080705015306512','ipn': 'rj','ct': '201326592','is': '','fp': 'result','queryWord': '彭于晏','cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '','z': '','ic': '','hd': '','latest': '','copyright': '','word': '彭于晏','s': '','se': '','tab': '','width': '','height': '','face': '','istype': '','qc': '','nc': '1','fr': '','expermode': '','force': '','cg': 'star','pn': '30','rn': '30','gsm': '1e',}# 将编码形式转换为utf-8response = requests.get(url=url, headers=header, params=param)response.encoding = 'utf-8'response = response.textprint(response)

运行结果如下:

看上去挺乱的哈,没事,我们给包装一下!

在上面的基础上加上:

 # 把字符串转换成json数据data_s = json.loads(response)print(data_s)

运行结果如下:

和上面相比,已经明晰很多了,但依旧不够明确,为什么呢?因为它打印的格式不方便我们观看!

对此,有两种解决办法。

①导入pprint库,接着输入pprint.pprint(data_s),就能打印啦,如下图

②使用json在线解析器(自行百度),结果如下:

解决掉上一步,我们会发现,想要的数据都在data里面!

那么就提取吧!

 a = data_s["data"]for i in range(len(a)-1):  # -1是为了去掉上面那个空数据data = a[i].get("thumbURL", "not exist")print(data)

结果如下:

到这里,已经成功90%啦,剩下的就是保存和优化代码了!

3、完整代码

这部分和上面有些许不同,仔细看看就会发现嗷!

# -*- coding: UTF-8 -*-
"""
@Author  :远方的星
@Time   : 2021/2/27 17:49
@CSDN    :https://blog.csdn.net/qq_44921056
@腾讯云   : https://cloud.tencent.com/developer/user/8320044
"""
import requests
import json
import os
import pprint
# 创建一个文件夹
path = 'D:/百度图片'
if not os.path.exists(path):os.mkdir(path)
# 导入一个请求头
header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
# 用户(自己)输入信息指令
keyword = input('请输入你想下载的内容:')
page = input('请输入你想爬取的页数:')
page = int(page) + 1
n = 0
pn = 1
# pn代表从第几张图片开始获取,百度图片下滑时默认一次性显示30张
for m in range(1, page):url = 'https://image.baidu.com/search/acjson?'param = {'tn': 'resultjson_com','logid': ' 7517080705015306512','ipn': 'rj','ct': '201326592','is': '','fp': 'result','queryWord': keyword,'cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '','z': '','ic': '','hd': '','latest': '','copyright': '','word': keyword,'s': '','se': '','tab': '','width': '','height': '','face': '','istype': '','qc': '','nc': '1','fr': '','expermode': '','force': '','cg': 'star','pn': pn,'rn': '30','gsm': '1e',}# 定义一个空列表,用于存放图片的URLimage_url = list()# 将编码形式转换为utf-8response = requests.get(url=url, headers=header, params=param)response.encoding = 'utf-8'response = response.text# 把字符串转换成json数据data_s = json.loads(response)a = data_s["data"]  # 提取data里的数据for i in range(len(a)-1):  # 去掉最后一个空数据data = a[i].get("thumbURL", "not exist")  # 防止报错key errorimage_url.append(data)for image_src in image_url:image_data = requests.get(url=image_src, headers=header).content  # 提取图片内容数据image_name = '{}'.format(n+1) + '.jpg'  # 图片名image_path = path + '/' + image_name  # 图片保存路径with open(image_path, 'wb') as f:  # 保存数据f.write(image_data)print(image_name, '下载成功啦!!!')f.close()n += 1pn += 29

运行结果如下:


友情提示
①:一页是30张
②:输入的内容可以很多变:比如桥、月亮、太阳、胡歌、赵丽颖等等。

四、Blogger’s speech

希望大家可以,点赞、关注、收藏,三连支持一下!

作者:远方的星
CSDN:https://blog.csdn.net/qq_44921056
腾讯云:https://cloud.tencent.com/developer/column/91164
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

python爬虫随心所欲地爬取百度图片相关推荐

  1. Python爬虫实战之爬取百度贴吧帖子

    Python爬虫实战之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的 ...

  2. 使用python和PyQt5编写爬取百度图片的界面工具

    使用python和PyQt5编写爬取百度图片的界面工具 本篇文章的主要内容是展示我个人编写的,以界面小工具的方式爬取百度上面的图片,功能很单一,根据关键词爬取图片,代码很简单,新手上路请多指教. 代码 ...

  3. python爬虫爬取百度图片总结_python爬虫如何批量爬取百度图片

    当我们想要获取百度图片的时候,面对一张张图片,一次次的点击右键下载十分麻烦.python爬虫可以实现批量下载,根据我们下载网站位置.图片位置.图片下载数量.图片下载位置等需求进行批量下载,本文演示py ...

  4. Python爬虫实战 | (9) 爬取搜狗图片

    本篇博客我们将爬取百度图片,输入搜索词,爬取与搜索词相关的图片. 首先打开搜狗图片https://pic.sogou.com/,比如搜索"猫",此时的URL如下: https:// ...

  5. 百度贴吧界面html程序代码,python爬虫例题:爬取百度贴吧评论区图片和视频

    百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢? 今天,本期Python教程带大家通过搜索关键字来获取评论区的图片和视频. [二.项目目 ...

  6. Python爬虫实战之爬取百度音乐歌曲

    Python爬虫爬取百度音乐歌曲 整体思路如下: 1.搜索:通过搜索界面输入歌手名字找到歌手的歌曲信息.千千音乐:网址 2.找到歌曲信息:通过遍历歌曲列表信息界面获取每个歌曲的ID,以及歌曲的总数 3 ...

  7. python爬虫实践之爬取美女图片

    目录 概述 准备 所需模块 涉及知识点 运行效果 完成爬虫 1. 分析网页 2. 爬虫代码 概述 爬取妹子图网的美女图片. 准备 所需模块 time requests lxml 涉及知识点 pytho ...

  8. Python依据单个关键词爬取百度图片

    最近由于工作需要要使用大量的水果蔬菜图片,故萌生使用爬虫抓取百度图片的想法,并未用于商业用途,只是为了测试数据.所以并未使用多线程.框架等技术. 由于百度图片是动态加载的,发现搜索关键词后action ...

  9. php爬去百度图片,python爬虫:随心所欲地爬取百度图片

    文章目录一.前言 二.需要导入的库 三.实现过程 1.下载链接分析 2.代码分析 3.完整代码 四.Blogger's speech 一.前言 之前爬取了很多静态网页的内容,包括:小说.图片等等,今天 ...

  10. python贴吧爬虫-Python 爬虫练习: 爬取百度贴吧中的图片

    背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...

最新文章

  1. 《强化学习周刊》第16期:多智能体强化学习的最新研究与应用
  2. MYSQL慢日志探索
  3. RAC srvctl 命令报 libpthread.so.0 cannot open shared object file No such file or directory 解决方法...
  4. android评论功能带emoji,分享一个自己写的emoji-comments评论组件
  5. ABP理论学习之内嵌资源文件
  6. 《Java就业培训教程》_张孝祥_书内源码_07
  7. 虚幻引擎源码分析(3)
  8. 20考研率辉计算机复试(贪心法)
  9. 计算机中缺少d3dx11_43.dll,韩博士传授win10系统运行软件提示计算机丢失d3dx11_43.dll的处理对策...
  10. 深入浅出node.js第9章玩转进程摘录
  11. pngimg 可以商用吗_设计师你还在担心素材版权吗?大量免费可商用素材在这里...
  12. 史上最全最基础的Oracle数据库教程(入门一)介绍Oracle默认用户
  13. css translate 坐标,CSS3 位移转换 translate3d()translatez()应用实例
  14. Unity 用ml-agents机器学习造个游戏AI吧(2)(入门DEMO)
  15. 锁定计算机小键盘,笔记本数字键盘锁了要怎么办【图文教程】
  16. 步进电机五根线怎么接_软启动怎么接电机?软启动电机实物接线图
  17. postman如何设置字体大小
  18. 注册表改win 7更新服务器,WIN7安装卡死在更新注册表设置真正解决办法
  19. java android时间工具类 week 月年
  20. 写一个函数insert,用来向一个动态链表插入节点。

热门文章

  1. 计算机启动键,U启动U盘启动盘一键启动按键大全
  2. OpenG入门之配置lib文件+include文件
  3. python中isupper是什么意思_Python string isupper()用法及代码示例
  4. word文档中实现目录索引中标题加粗,前导符和页码不加粗
  5. 关于Si24r1调试的总结
  6. K线形态识别—双K线之卖出型双日K线组合
  7. 《第二次曲线创新》李善友教授
  8. 苏宁!你还挺得过去吗?(苏宁大幅裁员)
  9. java读写xlsx文件
  10. 算加权成绩(MATLAB)