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

制作解析网址的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

得到效果如下:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rpc 服务器不可用_RPC和微服务

RPC全称Remote Procedure Call,即远程过程调用。其本质上其实就是主机A通过某种网络协议向支持相同协议的主机B发送一个任务执行命令,并且在某些情况下,还能支持任务执行结果的返回。几乎每一个RPC都有着自己的网络协议定义,如果要…

随机森林降维matlab代码,随机森林代码实现问题

% mtry number of predictors sampled for spliting at each node.% votes (classification only) a matrix with one row for each input data point and one% column for each class, giving the fraction or number of ?votes? from the random% forest.% o…

系统分析与控制_质量体系文件:测量系统分析控制程序

本公众号知识分享:体系管理、质量管理、书籍教程;国标行标、团标企标;课件教材、系统培训、资料下载、以及部分软件及教程等; 告诉我您的需求,小编随时恭候为您服务!下面让我们一起开启本章内容学习&#x…

python商城源码_自学Python才几天,就成功编写出俄罗斯方块游戏,附自学教程

人们常说,python不适合做游戏,但我偏爱玩游戏,做不了大的,做个小的也行啊。于是,我在自己毫无基础的条件下,用两天时间学python基础理论,再用已有的俄罗斯方块游戏源码和源文件,在我…

matlab 中曲线颜色,matlab曲线颜色样式设置

满意答案南渡江ndj2013.09.03采纳率:43% 等级:12已帮助:19801人你好 这是我总结的画图资料比如画一条蓝色的x号线plot(x,y,bg)画图:线形:-实线 -. 点划线 --长虚线 :短虚线符号 颜色 符号 线形b 蓝 . 点c 青 。 圈g 绿 标记k 黑 - 实线m …

图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码)

雷锋网 (公众号:雷锋网) 按:本文为 雷锋字幕组 编译的技术博客,原标题GAN with Keras: Application to Image Deblurring,作者为Raphal Meudec。翻译 | 廖颖 陈俊雅 整理 | 凡江2014年 Ian Goodfellow 提出了 生成对抗网络(GAN)…

小程序动态class_会后剧透!百度智能小程序的最新动态都在这儿了!

月活突破5亿,入驻智能小程序数量42万。这是百度智能小程序在万象-百度2020移动生态大会上交出的最新成绩单。当天,百度方面还以“生态进化,共创共荣”为主题,召开了智能小程序分论坛。分论坛上,百度特别邀请了百度副总…

matlab qtdecomp,Opencv图像识别从零到精通(25)------区域分裂与合并

区域分割一般认为有漫水填充,区域分裂与合并,分水岭,这篇是中间的区域分裂和合并。区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,当图像中某个区域的特征不一致时就将该区域分裂成4个相等的子区域,当相邻的…

去调频体制下的 rd算法_【技术文章】一次调频工作原理及控制 学习1+1

1、基本概念一次调频:PrimaryFrequencyControl。在电网实际运行中,当电量消耗与电量供给不匹配时,即可引起电网频率出现变化较小、变动周期较短的微小分量,这种频率扰动主要靠汽轮发电机组本身的调节系统直接自动调整汽轮机调门完…

tinyxml 读取文本节点_在Windows下使用TinyXML-2读取UTF-8编码包含中文字符的XML文件...

TinyXML-2 是一个用 C 开发的小巧、高效的 XML 解析工具,它在 GitHub 网站上的链接为:https://github.com/leethomason/tinyxml2 。它的结构非常精简,仅由 tinyxml2.h 和 tinyxml2.cpp 两个文件组成。TinyXML-2 能够处理 UTF-8 编码方式的 XM…

矩阵特征值的用matlab,[急求]谁可以用matlab帮我运行求矩阵特征值的命令???...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼v Columns 1 through 60.0529 0.0228 - 0.0573i 0.0228 0.0573i 0.0222 0.0630i 0.0222 - 0.0630i -0.0630 0.0105i0.2249 -0.0870 0.2003i -0.0870 - 0.2003i 0.1077 0.2366i 0.1077 - 0.2366i 0.1861 0.0350i0.0977 -0.082…

蓝牙版本avrcp怎么选_500元内无线蓝牙耳机测评年轻人的第一款廉价蓝牙耳机怎么选?...

这是马克君的第 90 篇对比测评-建议佩戴耳机体验-?- 10款TWS耳机测评 -TWSTrue Wireless Stereo⇩真无线立体声自AirPods问世以来,真无线耳机的概念开始爆火?。虽然AirPods“真香”,但售价也是真滴贵,所以有没有便宜又好用的真无线蓝牙耳机…

kb4023057安装失败_微软重发Win10 KB4023057 补丁,推动Win10更新

8月29日早间消息:微软已经重新发布了Win10补丁KB4023057,其主要帮助用户升级到 Win10 2004或更新版本。微软表示,重新发布的补丁对 Windows Update 本身的可靠性进行了改进。此外,它还可以通过压缩用户目录中的文件来释放计算机上…

数据库查询语句慢如何优化_常见Mysql的慢查询优化方式

1 概念 MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。 具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。 long_query_time的默…

pytorch中深度拷贝_pytorch:对比clone、detach以及copy_等张量复制操作

pytorch提供了clone、detach、copy_和new_tensor等多种张量的复制操作,尤其前两者在深度学习的网络架构中经常被使用,本文旨在对比这些操作的差别。1. clone返回一个和源张量同shape、dtype和device的张量,与源张量不共享数据内存&#xff0c…

php显示doc文件乱码,如何解决php doc 乱码问题

PHP下载DOC乱码最近做的一个系统,需要下载doc文件以前的代码下载完成后,打开总是乱码...google咯很久也没有解决办法后面总算搞定必须在Header之前进行清除,即 ob_end_clean()$file_size filesize($logName);ob_end_clean();header("Content-type:application/octet-stre…

c++ 多重背包状态转移方程_Python|动态规划关于0-1背包问题

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于腾讯云,作者:算法与编程之美前言对学算法的同学来说,动态规划是其必学且较为重要的问题之一;…

golang string转int8_golang 中string和int类型相互转换

Notepad++ 默认快捷键Notepad绝对是windows下进行程序编辑的神器之一,要更快速的使用以媲美VIM,必须灵活掌握它的快捷键,下面对notepad默认的快捷键做个整理(其中有颜色的为常用招数): 1 ...DB2执行脚本经常会遇到数据库脚本放在.sql文件中,那么怎么去执…

java 第二天,Java复习第二天

1.idea里jar包和war的区别JAR(JAVA Archive 是类的归档文件),JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。简单来说,jar包就像一个插件而且是打包已经写好的类…

qlistview 自定义控件_是否可以在QListView中添加自定义窗口小部件?

I have a large log data (100, 1000, 100000, ... records) and I want to visualize it in the following manner:Which widget (e.g. QListView, QListWidget) should I use and how, in order to stay away from performance and memory problems?解决方案Is it possible …