0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过分析ajax中信息爬取图片

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-23 17:00 次阅读

通过本案例解析ajax请求返回的信息下载图片

爬取url地址:https://pic.sogou.com/pics?query=动物

分析:

分析url地址:每页25条数据,共计10页

第1页:https://pic.sogou.com/napi/pc/searchList?mode=1&start=0&xml_len=48&query=动物
第2页:https://pic.sogou.com/napi/pc/searchList?mode=1&start=48&xml_len=48&query=动物
第3页:https://pic.sogou.com/napi/pc/searchList?mode=1&start=96&xml_len=48&query=动物

通过分析得出请求改变start参数就可以改变页数

具体实现代码:

import requests
import os

class ImageSougou(object):
   url = 'https://pic.sogou.com/napi/pc/searchList'
   save_dir = './sougou' # 文件保存的路径
   count = 0
   # 初始化
   def __init__(self, word):
       self.word = word
       self.dir_path = os.path.join(self.save_dir, word)
       self.params = {
           'query': word,
           'mode': '1',
           'start': '0',
           'xml_len': 48,
       }
       self.headers = {
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',
       }
       # 创建保存图片的文件夹
       self.folder_exist(self.dir_path)
       self.last_img_url = ''
       self.current_page = 0
   
   # 请求包含图片url的网页
   def parse(self):
       while True:
           self.params['start'] = str(self.current_page*48)
           response = requests.get(url=self.url, headers=self.headers, params=self.params)
           response.encoding='utf8'
           data = response.json()['data']['items']
           if data:
               for img_info in data:
                   img_url = img_info['picUrl']
                   self.download(img_url)
               self.current_page += 1
           else:
               break
   # 下载一张图片
   def download(self, img_url, img_type='jpg'):
       self.count += 1
       print('正在下载第%d张图片...'%self.count, img_url)
       try:
           response = requests.get(img_url)
       except Exception as e:
           print('下载失败:', img_url)
           return None
       img_name = img_url.split('/')[-1]
       img_path = os.path.join(self.dir_path, img_name)
       try:
           with open(img_path, 'wb') as f:
               f.write(response.content)
       except Exception as e:
           print('下载失败:', img_url)
   def folder_exist(self, dir_path):
       '''
       1. 作用:判断文件夹路径是否存在,不存在则创建
       2. 参数:dir_path:文件夹路径
       3. 返回值:None
       '''
       if not os.path.exists(dir_path):
           os.makedirs(dir_path)
if __name__ == '__main__':
   image = ImageSougou('动物')
   image.parse()

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
  • 爬虫
    +关注

    关注

    0

    文章

    77

    浏览量

    6517
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【图片编辑应用】

    通过动态设置元素样式的方式,实现几种常见的图片操作,包括裁剪、旋转、缩放和镜像。
    的头像 发表于 04-23 09:42 102次阅读
    HarmonyOS开发实例:【<b class='flag-5'>图片</b>编辑应用】

    视觉分析中,二值化与灰度图片的数据传导问题

    求助大佬,视觉分析中,需要做Profile分析,如图,怎么让Profile以灰度图片分析。(图中是以二值化图片做的
    发表于 04-08 17:26

    鸿蒙开发教学-图片的引用

    该接口通过图片数据源获取图片,支持本地图片和网络图片的渲染展示。其中,src是图片的数据源。
    的头像 发表于 02-01 17:36 240次阅读
    鸿蒙开发教学-<b class='flag-5'>图片</b>的引用

    鸿蒙HarmonyOS引用图片的方法

    前言 Image通过调用接口来创建,接口调用形式如下:   Image(src: string | Resource | media.PixelMap)   该接口通过图片数据源获取图片
    的头像 发表于 02-01 14:35 331次阅读
    鸿蒙HarmonyOS引用<b class='flag-5'>图片</b>的方法

    如何判断电路中晶振是否被过分驱动?

    如何判断电路中晶振是否被过分驱动? 判断电路中晶振是否被过分驱动是一个重要的工程任务,它可以帮助我们确保晶振的稳定性,并避免可能的故障和损坏。在本文中,我将详细介绍晶振过分驱动的概念、原因以及
    的头像 发表于 01-31 09:28 194次阅读

    bmp图片通过串口传送spi flash需要变化图片格式吗?

    请教一下,如果想把bmp图片通过串口传送到spi flash,需要把bmp转换成什么格式?
    发表于 11-07 07:46

    PCB设计安规,电气间隙与电距离要点

    在PCB设计中,电距离和电气间隙是两个非常重要的安规要求。它们都涉及到PCB上元件之间的安全距离,以确保在元件故障时,不会发生短路或其他安全问题。 电距离是指两个连接的元件之间的距离,通常是通过
    发表于 11-03 11:16

    PCB设计安规丨电距离与走线规则

    电距离是沿绝缘表面测得的两个导电零部件之间或导电零部件与设备防护界面之间的最短路径。即在不同的使用情况下,由于导体周围的绝缘材料被电极化,导致绝缘材料呈现带电现象。 UL、CSA和VDE安全
    发表于 10-31 16:45

    信号时域分析的步骤

    时域分析的步骤,以便更好地理解时域分析的过程。时域分析是一种通过分析信号在时间域上的变化规律来研究系统特性的方法。
    的头像 发表于 09-28 15:43 1632次阅读
    信号时域<b class='flag-5'>分析</b>的步骤

    模软件的使用教程

    现在推荐2款模软件,一款对文字模,另一款针对图片模11 22 Crtl ENTER.文字模软件使用步骤:.在此界面下输入\"普中\"
    发表于 09-27 06:25

    集成电路为什么要做失效分析?失效分析流程?

    失效分析(FA)是根据失效模式和现象,通过分析和验证,模拟重现失效的现象,找出失效的原因,挖掘出失效的机理的活动。
    的头像 发表于 09-06 10:28 1462次阅读
    集成电路为什么要做失效<b class='flag-5'>分析</b>?失效<b class='flag-5'>分析</b>流程?

    Cortex-R82的预器功能分析

    高性能处理器采用硬件数据预取来减少大的主内存延迟对性能的负面影响。有效的预机制可以显著提高缓存命中率。数据预通过在需要数据之前提取数据来提高执行性能。虽然预大大提高了许多程序的性
    发表于 08-09 06:11

    中信集团与华为公司成功举办“商业联合创新中心”签约揭牌仪式

    2023年6月16日,中信集团总经理奚国华、华为公司轮值董事长胡厚崑在深圳共同为“中信-华为商业联合中心”揭牌。揭牌仪式上,中信银行、中信网络、中信
    的头像 发表于 06-19 18:40 432次阅读
    <b class='flag-5'>中信</b>集团与华为公司成功举办“商业联合创新中心”签约揭牌仪式

    中信网络参加第三十一届中国国际信息通信展览会

    等方面的创新成果,内容延伸到工业制造、医疗、能源、交通等众多领域,以丰富的案例和场景展示信息通信业在赋能实体经济和推动传统行业转型升级方面发挥的积极作用。 中信网络有限公司与中信卫星携手参展,以“融天汇地赋能产业数字化发
    的头像 发表于 06-13 09:16 553次阅读
    <b class='flag-5'>中信</b>网络参加第三十一届中国国际<b class='flag-5'>信息</b>通信展览会

    图片文字识别:揭开数字世界的神秘面纱

    便应运而生。 图片文字识别,简单来说就是将图片中的文字信息提取出来。这项技术的应用范围非常广泛,例如在商业领域中,我们可以通过图片文字识别技
    的头像 发表于 05-11 18:20 414次阅读