制作解析网址的get

1 defgethtml(url,postdata):2

3 header = {'User-Agent':4 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',5 'Referer':6 'http://image.baidu.com',7 'Host': 'image.baidu.com',8 'Accept': 'text/plain, */*; q=0.01',9 'Accept-Encoding':'gzip, deflate',10 'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',11 'Connection':'keep-alive'}12

13 #解析网页

14 html_bytes = requests.get(url, headers=header,params =postdata)15

16 return html_bytes

头部的构造请参考上一篇博文:

分析网址:

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=30&rn=30&gsm=1e&1472364207674=

分解为:

url = 'http://image.baidu.com/search/acjson?' + postdata + lasturl

lasturl为时间戳,精确到后三位小数的时间戳,构造这个时间戳,后三位小数我就随机生成一个三位数了:

1 importtime2 importrandom3 timerandom = random.randint(100,999)4 nowtime =int(time.time())5 lasturl = str(nowtime) + str(timerandom) + '='

最后制作postdata:

1 #构造post

2 postdata ={3 'tn':'resultjson_com',4 'ipn':'rj',5 'ct':201326592,6 'is':'',7 'fp':'result',8 'queryWord': keyword,9 'cl': 2,10 'lm': -1,11 'ie': 'utf-8',12 'oe': 'utf-8',13 'adpicid': '',14 'st': -1,15 'z':'',16 'ic': 0,17 'word': keyword,18 's': '',19 'se': '',20 'tab': '',21 'width': '',22 'height': '',23 'face': 0,24 'istype': 2,25 'qc': '',26 'nc': 1,27 'fr': '',28 'pn': pn,29 'rn': 30,30 'gsm': '1e'

31 }

其中页数pn和搜索关键字keywork为:

1 #搜索的关键字

2 #keywork = input('请输入你要查找的关键字')

3 keyword = 'gif'

4

5 #页数

6 #pn = int(input('你要抓取多少页:'))

7 pn = 30

将得到的信息保存在本地,当所有都保存下来了再去下载图片:

1 #解析网址

2 contents =gethtml(url,postdata)3

4 #将文件以json的格式保存在json文件夹

5 file = open('../json/' + str(pn) + '.json', 'wb')6 file.write(contents.content)7 file.close()

读取文件夹里面的所有文件:

1 #找出文件夹下所有xml后缀的文件

2 def listfiles(rootdir, prefix='.xml'):3 file =[]4 for parent, dirnames, filenames inos.walk(rootdir):5 if parent ==rootdir:6 for filename infilenames:7 iffilename.endswith(prefix):8 file.append(rootdir + '/' +filename)9 returnfile10 else:11 pass

遍历json文件夹,读取里面的东西:

1 #找到json文件夹下的所有文件名字

2 files = listfiles('../json/', '.json')3 for filename infiles:4 print(filename)5 #读取json得到图片网址

6 doc = open(filename, 'rb')7 #('UTF-8')('unicode_escape')('gbk','ignore')

8 doccontent = doc.read().decode('utf-8', 'ignore')9 product = doccontent.replace(' ', '').replace('\n', '')10 product = json.loads(product)

查询字典data:

# 得到字典data

onefile = product['data']

将字典里面的图片网址和图片名称放到数组里面:

制作一个解析头来解析图片下载:

1 defgetimg(url):2

3 #制作一个专家

4 opener =urllib.request.build_opener()5

6 #打开专家头部

7 opener.addheaders = [('User-Agent',8 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0'),9 ('Referer',10 'http://image.baidu.com'),11 ('Host', 'image.baidu.com')]12 #分配专家

13 urllib.request.install_opener(opener)14

15 #解析img

16 html_img =urllib.request.urlopen(url)17

18 return html_img

最后将图片下载到本地的gif文件夹:

1 for item inonefile:2 try:3 pic = getimg(item['thumbURL'])4 #保存地址和名称

5 filenamep = '../gif/' + validateTitle(item['fromPageTitleEnc'] + '.gif')6 #保存为gif

7 filess = open(filenamep, 'wb')8 filess.write(pic.read())9 filess.close()10

11 #每一次下载都暂停1-3秒

12 loadimg = random.randint(1, 3)13 print('图片' + filenamep + '下载完成')14 print('暂停' + loadimg + '秒')15 time.sleep(loadimg)16

17 exceptException as err:18 print(err)19 print('暂停' + loadimg + '秒')20 time.sleep(loadimg)21 pass

得到效果如下:

本文只是编程,处理这种网址最重要的是思想,思想我写在上一篇博文:

思想有了,程序是很简单的问题而已。

python 异步下载图片_python3抓取异步百度瀑布流动态图片(二)get、json下载代码讲解...相关推荐

  1. java随机抓取网站上的图片_抓取一个网站特定的全部图片(JAVA)

    1. 目的 用五笔时,如果碰到不会拆的字,只好换回拼音.但这样做治标不治本,于是到网上找五笔反查工具.最后发现一个不错的网站--不仅有每个字对应的五笔码,还有其字根图.可惜的是,这是一个网站.换句说, ...

  2. 2018最全如何利用Python网络爬虫抓取微信朋友圈的动态

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  3. 笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]...

    一.     先贴一张图,这个界面就是程序的主界面了: 二.     部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的 ...

  4. Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...

  5. 抓取异步数据(AJAX)笔记

    抓取异步数据(AJAX) 数据在XHR中 提取结果 完整代码 注意事项 数据在XHR中 可以看到,单击XHR按钮后,左侧的列表只显示了一个名为data的URL,很明显,这是获取数据的路由名字,在右侧的 ...

  6. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  7. python随机图片api_抓取随机图片

    最近收集了一些随机图片网址,想把这些图片全部抓取下来,到网上搜了搜,都只有抓取链接的,没有抓取图片的,这时正好看到了VariousArtist的抓图自动机,赶紧下了个Python(我是C++党)来试试 ...

  8. python:利用asyncio进行快速抓取

    原文地址:http://www.linuxeden.com/html/news/20140331/150106.html web数据抓取是一个经常在python的讨论中出现的主题.有很多方法可以用来进 ...

  9. [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

最新文章

  1. Python脱产8期 Day02
  2. HelloWorld实例(springmvc版)
  3. java after 函数_Java中关于Date的before函数和after函数的使用
  4. [leveldb] 3.put/delete操作
  5. C程序设计基础之多维数组的指针变量
  6. Jeecg 实现RESTful风格
  7. Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示
  8. Frameset使用教程
  9. Lingo 11安装教程
  10. 计算机病毒通常是指一段指令或什么,计算机病毒通常是()。 - 问答库
  11. 清华大学计算机杜瑜皓,我在清华等你来|2015国际信息学奥赛全球第四名杜瑜皓:人生不搏枉少年...
  12. w ndows系统启动日志ID,WIN7日志总能看到 特殊登陆 事件ID 4672,是怎么回事?
  13. 判断某整数是正整数、负整数还是零
  14. 2023 简单响应个人收款二维码源码 美化版
  15. 实验8 脉冲宽度调制(PWM)模块 北京化工大学 2019090034
  16. 卸载高版本的labview的vision模块和VAS采集模块装低版本
  17. DTU是什么?浅解DTU
  18. 如何删除电脑计算机用户,mininews怎么卸载_电脑上的mininews新闻如何删除-win7之家...
  19. 02-QMainWindow
  20. win10右键点击文件夹没响应,解决

热门文章

  1. k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...
  2. matlab画图设置
  3. 吴恩达《机器学习》学习笔记九——神经网络相关(1)
  4. android之常用知识点(一)
  5. hive函数大全:11大类、109个函数
  6. Effective Java~9. try-with-resource 优先于 try-catch
  7. Java获取并Kill系统进程
  8. java 包含汉字,java判断字符串中是否包含汉字
  9. CSDN 统一标签设计 征求反馈
  10. html鼠标悬停效果_【开发小技巧】023—如何使用HTML和CSS实现3D文字效果