爬取百度图片  在Python 2.7上运行

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: loveNightimport json
import itertools
import urllib
import requests
import os
import re
import sysstr_table = {'_z2C$q': ':','_z&e3B': '.','AzdH3F': '/'
}char_table = {'w': 'a','k': 'b','v': 'c','1': 'd','j': 'e','u': 'f','2': 'g','i': 'h','t': 'i','3': 'j','h': 'k','s': 'l','4': 'm','g': 'n','5': 'o','r': 'p','q': 'q','6': 'r','f': 's','p': 't','7': 'u','e': 'v','o': 'w','8': '1','d': '2','n': '3','9': '4','c': '5','m': '6','0': '7','b': '8','l': '9','a': '0'
}# str 的translate方法需要用单个字符的十进制unicode编码作为key
# value 中的数字会被当成十进制unicode编码转换成字符
# 也可以直接用字符串作为value
char_table = {ord(key): ord(value) for key, value in char_table.items()}# 解码图片URL
def decode(url):# 先替换字符串for key, value in str_table.items():url = url.replace(key, value)# 再替换剩下的字符return url.translate(char_table)# 生成网址列表
def buildUrls(word):word = urllib.quote(word)url = r"http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word={word}&face=0&istype=2nc=1&pn={pn}&rn=60"urls = (url.format(word=word, pn=x) for x in itertools.count(start=0, step=60))return urls# 解析JSON获取图片URL
re_url = re.compile(r'"objURL":"(.*?)"')
def resolveImgUrl(html):imgUrls = [decode(x) for x in re_url.findall(html)]return imgUrlsdef downImg(imgUrl, dirpath, imgName):filename = os.path.join(dirpath, imgName)try:res = requests.get(imgUrl, timeout=15)if str(res.status_code)[0] == "4":print(str(res.status_code), ":" , imgUrl)return Falseexcept Exception as e:print("抛出异常:", imgUrl)print(e)return Falsewith open(filename, "wb") as f:f.write(res.content)return Truedef mkDir(dirName):dirpath = os.path.join(sys.path[0], dirName)if not os.path.exists(dirpath):os.mkdir(dirpath)return dirpathif __name__ == '__main__':word = raw_input("请输入你要下载的图片关键词:\n")word = str(word)dirpath = mkDir("results")urls = buildUrls(word)index = 0for url in urls:print("正在请求:", url)html = requests.get(url, timeout=10).content.decode('utf-8')imgUrls = resolveImgUrl(html)if len(imgUrls) == 0:  # 没有图片则结束breakfor url in imgUrls:if downImg(url, dirpath, str(index) + ".jpg"):index += 1print("已下载 %s 张" % index)

Python 爬虫实例(1)—— 爬取百度图片相关推荐

  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爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  9. Python爬虫实例: 爬取“最好大学网”大学排名

    实例2 爬取大学排名 上海交通大学设计了一个"最好大学网",上面列出了当前的大学排名.我们要设计爬虫程序,爬取大学排名信息. 爬虫功能要求: 输入:大学排名URL链接 输出:大学排 ...

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

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

最新文章

  1. sass文件编译的三种方式【舒】
  2. 2008最响亮的十二句屁话
  3. 0基础学python-从0开始学Python,0基础小白
  4. android studio m1,Android Studio 4.0发布 为Android 11做好准备
  5. CreateService / SC 创建自启动服务
  6. android 判断滑动方向,H5触摸事件判断滑动方向
  7. 数学--数论--快速幂--最大公约数--位运算模板
  8. Fission:基于 Kubernetes 的 Serverless 函数框架
  9. 源码编译安装screen
  10. 5.2g信道用哪个好_记工记账软件哪个比较实用?建筑工地用哪个记工记账软件好?...
  11. 通讯录标准化输入fread c语言,C语言实现通讯录系统
  12. PIC单片机入门教程(四)—— 第一个工程
  13. 对话马丁·福勒(Martin Fowler)——第六部分:性能与过程调优
  14. 大文件分割工具,QT实现
  15. 论文笔记:Pointing Novel Objects in Image Captioning
  16. XiunoBBS插件大全,可视化XiunoBBS插件
  17. U牌“唤醒生命,未来可7”
  18. 【环境配置】虚拟机中配置C++环境
  19. Unity 进阶 之 实现简单的音频可视化封装(包括音频和麦克风)
  20. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

热门文章

  1. mac下打开FTP服务
  2. VS013的单元测试去哪里了
  3. LIB和DLL的区别与使用,非常详细
  4. 《系统分析与设计方法》 计算投资回收分析
  5. 计算机仿真技术与应用,[计算机软件及应用]计算机仿真技术与应用简介.pdf
  6. Metasploit中aggregator插件无法使用
  7. XamarinAndroid组件教程RecylerView适配器动画动画种类
  8. 简单的字幕效果html,7种HTML5 Figure图片字幕标题特效
  9. 高级计算机网络知识点复习
  10. 大数据产品开发流程规范_大数据技术思想入门(三):分布式文件存储的流程