这几天尝试图片的爬取,根据一篇博客,有了一些收获,来总结一下,此次爬取的对象是百度图库。百度爬虫分为就3部分:

(1)获得批量图片的url;

(2)通过每张图片的url获取图像内容;

(3)保存图片。

以上所有内容都是基于reques完成的。

url = 'http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&fm=result&pos=history&word='+word+'&pn='

这是百度图库的链接,关键的是'&pn=',这个可以获取不同页,但是百度图库是往下拉动的,这个还是看别人博客才知道,不加这个只能获取30个图片。

(1)定义的第一个函数Many_urls,获取批量图片的url。这里输入是百度图库的网址和想要获取图像的数量,返回获取的批量图像的url列表。

def Many_urls(Url,num):print('正在检测图片,请稍等.....')t = 0List=[]while t < (int(num/30)+1):url = Url + str(t)t+=1try:urls=requests.get(url)urls.encoding='utf-8'text = urls.textpic_url = re.findall('"objURL":"(.*?)",', text, re.S)  # 先利用正则表达式找到图片urlif len(pic_url) == 0:breakelse:List.extend(pic_url)except:print('打开网页失败')continuereturn List

(2)定义获取图像的函数,输入是图片的url,输出的是图片的content。

def pic_content(url):    try: pic=requests.get(url)except:         print('图片获取失败')return pic.content

(3)将获取到的图像保存起来,输入是图像的content。

def pic_download(content,string):fp = open(string, 'wb')fp.write(content)fp.close()

整个实验代码如下,可以运行下,图片文件夹在文件所在位置。

# -*- coding: utf-8 -*-
import re
import requests
import os
import timenum = 0
numPicture = 0
file = ''
List = []
word=''def Many_urls(Url,num):print('正在检测图片,请稍等.....')t = 0List=[]while t < (int(num/30)+1):url = Url + str(t)t+=1try:urls=requests.get(url)urls.encoding='utf-8'text = urls.textpic_url = re.findall('"objURL":"(.*?)",', text, re.S)  # 先利用正则表达式找到图片urlif len(pic_url) == 0:breakelse:List.extend(pic_url)except:print('打开网页失败')continuereturn Listdef pic_content(url):    try: pic=requests.get(url)except:         print('图片获取失败')return pic.contentdef pic_download(content,string):fp = open(string, 'wb')fp.write(content)fp.close()if __name__ == '__main__':  # 主函数入口word = input("请输入搜索关键词(可以是人名,地名等): ")url = 'http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&fm=result&pos=history&word='+word+'&pn='numPicture = int(input('请输入想要下载的图片数量 '))urls=Many_urls(url,numPicture)print('检测完成!!!!!!!!!!!!!')time.sleep(1)file = input('请建立一个存储图片的文件夹,输入文件夹名称即可')if os.path.exists(file):print('该文件已存在,请重新输入')file = input('请建立一个存储图片的文件夹,)输入文件夹名称即可')os.mkdir(file)else:os.mkdir(file)num=1print('找到关键词:' + word + '的图片,即将开始下载图片...')for url in urls[:numPicture]:try:string = file + r'\\' + word + '_' + str(num) + '.jpg'print('正在下载第' + str(num + 1) + '张图片,图片地址:' + url)content=pic_content(url)pic_download(content,string)num+=1except:continueprint('当前搜索结束,感谢使用')print('猜你喜欢')

我是参考这篇博客写的,更详细的内容可以看这篇博客。

基于requests百度图库图片爬取相关推荐

  1. 基于requests和lxml库爬取优信二手车

    工具: requests库和lxml库 具体代码: # _*_ coding:utf-8 _*_ import requests import re import time import MySQLd ...

  2. python爬虫实践记录-基于requests访问翻译网页爬取结果

    前言 目前主流的翻译网站反爬虫都挺严格的,某度有sign算法,谷歌自带技能冷却.... 查了一下发现一个反爬虫没用那么苛刻的翻译网站:译典通.         第一次听说这个网站,界面挺老,爬来的源代 ...

  3. 爬虫-基于requests模块xpath解析爬取豆瓣即将上映电影目录

    首先,我们要确定要爬取的对象,然后确定我们需要的数据,要有针对性的去分析,打开豆瓣网查看 在这里我们可以看到即将上映的电影不多呀,先试试这个吧- 右键检查,打开开发者模式 此时点击NETWORK选项是 ...

  4. 爬虫——百度图片爬取

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用网络爬虫:是捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分,是从互联网中搜集网页.采集信 ...

  5. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  6. Python 百度图片爬取

    Python 百度图片爬取 还在为图片不够,一张张点下载发愁吗,这次我们图片一次爬到够! 这次的代码还是很常规的,只是链接的获取要有些技巧,直接代码解说. """这次从逻 ...

  7. python爬虫之使用requests进行图片爬取

    前期回顾,关于python基础知识以及爬虫基础我们可以看 --> python学习手册,网络安全的小伙伴千万不要错过. 图片爬取思路 学会这一技能需要我们会python基础,xpath解析,其用 ...

  8. python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取

    获取待爬取页面 今天继续爬取一个网站,http://www.27270.com/ent/meinvtupian/ 这个网站具备反爬,so我们下载的代码有些地方处理的也不是很到位,大家重点学习思路,有啥 ...

  9. 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)

    各位未来国家栋梁们好啊~相信栋梁们经常需要在网络上寻找各种资源,作为二次元的必备精神食粮,图片资源那是必不可少!在这里用python写了一个超简单的图片爬取小项目~话不多说,附上源码!(有用的话点个赞 ...

最新文章

  1. Extmail配置实践(一)
  2. Leetcode初级算法(链表篇)
  3. 启动任务管理器命令符,doc命令
  4. python nonlocal的用法_简谈Python3关键字nonlocal使用场景
  5. 唤醒控件曾经拥有的能力
  6. 电大计算机网络网考,电大计算机网络(本)学习周期01任务A_0009答案
  7. 分析容灾备份建设需求
  8. Angular学习笔记第一节 基本概念
  9. 在linux centos7上安装git
  10. 【英语学习】【Daily English】U02 Daily Routine L02 I go to the gym every other day
  11. wcf rest服务启用gzip压缩
  12. TensorFlow入门篇(一):搭建简单的线性拟合例子
  13. SQL Server Mobile 数据类型
  14. cmder 下载及安装
  15. 【基础教程】禁忌搜索算法【005期】
  16. python 克里金空间插值_C#教程之空间插值——克里金插值
  17. Python 可轻松开发植物大战僵尸游戏(附动态演示+源码分享)
  18. 黑马SpringBoot --基础篇
  19. 呼叫中心静态座席的配置
  20. 30岁的问题,为什么有人说程序员只能干到30岁。

热门文章

  1. java实现汽车租赁项目
  2. 登山安化云台山风景区山巅,畅游云海
  3. Vue使用Echarts实现广西地图(旧版)
  4. Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器
  5. 短信系统WEB网页短信平台设计-移讯云短信系统
  6. 达索SIMULIA多物理场仿真解决方案
  7. 面试的时候问:你的期望薪资多少?怎么谈?
  8. 笔记本键盘鼠标怎么和台式机共享
  9. ubuntu linux下批量重命名工具:purrr
  10. 纬地计算机公司有年终奖吗,常见问题解答【纬地系列软件教程】.doc