最近由于工作需要要使用大量的水果蔬菜图片,故萌生使用爬虫抓取百度图片的想法,并未用于商业用途,只是为了测试数据。所以并未使用多线程、框架等技术。
由于百度图片是动态加载的,发现搜索关键词后action的参数很相似,故使用requests.get(url , params=)函数去获取内容。并正则提取到所有的图片链接,再将这些图片写入文件夹中。
开始和网上的资料中使用的获取json字符串,但是有些关键词会提示无法解析json,多次尝试后未果故放弃提取json改为正则匹配。

import requests
import re
import osdef getIntPages(keyword, pages):params = []for i in range(30, 30*pages+30, 30):params.append({'tn':'resultjson_com','ipn': 'rj','ct':'201326592','is': '','fp': 'result','queryWord': keyword,'cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','st': '-1','ic': '0','word': keyword,'face': '0','istype': '2','nc': '1','pn': i,'rn': '30'})url = 'https://image.baidu.com/search/acjson'urls = []for i in params:content = requests.get(url, params=i).textimg_urls = re.findall(r'"thumbURL":"(.*?)"', content)#正则获取方法urls.append(img_urls)#urls.append(requests.get(url,params = i).json().get('data'))开始尝试的json提取方法#print("%d times : " % x, img_urls)return urlsdef fetch_img(path,dataList):if not os.path.exists(path):os.mkdir(path)x = 0for list in dataList:for i in list:print("=====downloading %d/1500=====" % (x + 1))ir = requests.get(i)open(path + '%d.jpg' % x, 'wb').write(ir.content)x += 1if __name__ == '__main__':url = 'https://image.baidu.com/search/acjson'dataList = getIntPages('蔬菜', 50)#依据蔬菜关键词获取50页的图片列表,每页30张图片fetch_img("vegetable/", dataList)#存取图片

该爬虫还有很多地方可以改进,如 :
1.多个关键词的搜索尝试
2.是否可以使用多线程框架提高抓取速度

Python依据单个关键词爬取百度图片相关推荐

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

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

  2. python pil保存图片_python爬取百度图片并保存到本地

    安装scrapy pip install Scrapy 进入终端,切换到自己项目代码的工作空间下,执行 scrapy startproject baidu_pic_spider 生成如下工程文件: i ...

  3. python3.7 根据关键词 爬取百度图片并下载到本地

    URL地址:http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1 ...

  4. 【Python】爬虫入门6:爬取百度图片搜索结果(基于关键字爬图)

    源代码 #!/usr/bin/env python # -*- coding: UTF-8 -*-# 需求:爬取百度图片# noinspection PyUnresolvedReferences im ...

  5. Python 爬虫实例(1)—— 爬取百度图片

    爬取百度图片  在Python 2.7上运行 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: loveNightimport json ...

  6. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

  7. Python爬取百度图片搜索结果

    爬取百度图片搜索的图片,我们先需要分析其访问 URL,我们在搜索页面,比如搜索 "abc" ,打开 F12 调试,下拉结果页面页,查看网络请求,在其中我们可以找到这样一个请求 ht ...

  8. Python 3.5_简单上手、爬取百度图片的高清原图

    利用工作之余的时间,学习Python差不多也有小一个月的时间了,路漫漫其修远兮,我依然是只菜鸟. 感觉学习新技术确实是一个痛并快乐着的过程,在此分享些心得和收获,并贴一个爬取百度图片原图的代码. 代码 ...

  9. 如何使用python爬取百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

最新文章

  1. 妥~阿里程序员常用的 15 款开发者工具
  2. BERT完全指南-从原理到实践
  3. 自由自在休闲食品带给小资的冰淇淋生活
  4. 深入理解 Android 的 IPC 机制--------Binder
  5. 比较两个时间字符串的大小
  6. 一条nginx命令引发的对于容器的思考
  7. maven 按业务拆分模块_Maven模块拆分方法
  8. UWP开发---通过委托跨页面导航
  9. WPS-JS宏开发-基础知识-01-初识
  10. java 加密方式_Get史上最优雅的加密方式!没有之一!
  11. COVID-19检测方法汇总
  12. 比 Xshell 还好用的 SSH 客户端神器,MobaXterm 太爱了!
  13. mybatis拦截器实现数据脱敏拦截器使用
  14. (字节流与字符流)OutputStream字节输出流
  15. nginx安装配置 linux
  16. 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
  17. android点击按钮打开相册,打开相机的代码
  18. Mac 安装 node.js 并进行配置
  19. JAVA多线程信号量Semaphore
  20. Java/Android中SHA1和SHA256加密

热门文章

  1. 智能仓储管理(WMS)系统建设理念
  2. Additive Angular Margin Loss (ArcFace) 附加角裕度损失的进阶之路
  3. 第一次安装win10+ubuntu双系统的经验及踩过的坑
  4. 【C编程】找出7个默森尼数。法国数学家默森尼曾提出下列公式:Mp=2^p-1。当p是素数并且Mp也是素数时,称Mp为默森尼数,
  5. ie加载项存在残留是什么_[IE]什么是加载项
  6. 流放者柯南服务器搭建虚拟机,流放者柯南服务器搭建教程
  7. android 对象的创建,android – 如何使用嵌套对象创建一个类Parcelable
  8. 快来薅羊毛,轻量、快捷、低使用门槛的PaaS平台在这里
  9. ubuntu16.04 无法输入中文的问题终于解决了
  10. 犀思云SD-WAN,助力企业分钟级构建新型混合专网