最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python下載衛(wèi)星云圖合成gif的方法示例

 更新時間:2020年02月18日 11:11:25   作者:吳大衛(wèi)  
這篇文章主要介紹了python下載衛(wèi)星云圖合成gif的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Python下載中央氣象臺衛(wèi)星云圖后保存為gif并播放,大致步驟:

  • 獲取URL
  • 下載圖片
  • 合成GIF
  • 播放GIF

1.獲取URL

1.1 先下載一份網頁源碼看看網頁結構

保存為:response.txt

#http庫
import requests
 
#準備http請求頭
headers = {"user-agent": "firefox"}
#中央氣象臺衛(wèi)星云圖網頁
url = 'http://www.nmc.cn/publish/satellite/fy2.htm'
#獲取網頁
r = requests.get(url, headers=headers)
#改編碼方式支持中文
r.encoding='utf-8'
#保存為文本
with open('response.txt','w', encoding='utf-8') as f:
 f.write(r.text)

1.2 到網頁查看圖片鏈接

右鍵圖片---查看元素

圖片鏈接如下:可以看到圖片鏈接的域名和網頁域名不同。

1.3 在網頁碼源response.txt中搜索圖片名稱

發(fā)現(xiàn)有一處列出了動畫的12張圖片:可以看到12張圖片的鏈接都在script字段中。

1.4 過濾出script,找到所有url

使用html解析庫解析出script,script的開頭type="text/javascript"作為過濾條件,結果打印看看:

#html/xml解析庫
from lxml import etree
 
#解析response
html = etree.HTML(r.text)
result = html.xpath('//script[@type="text/javascript"]/text()')[2]
print(result)

打印結果如下,可以看到是多行字符串。

根據(jù)圖片的鏈接規(guī)律,可以用正則匹配出來:

#正則庫
import re
 
urls = re.findall('/product.*.JPG', result)
print(urls)

成功匹配出圖片url。注意這里的url只有后半部分,根據(jù)之前的圖片鏈接可知,實際圖片url還需加上:http://image.mnc.cn。

1.5 因此寫獲取圖片URL函數(shù)

def getpage(page):
 try:
  r = requests.get(page, headers=headers)
  html = etree.HTML(r.text)
  result = html.xpath('//script[@type="text/javascript"]/text()')[2]
  urls = re.findall('/product.*.JPG', result)
  return urls
 except Exception as e:
  print(e)

2.下載圖片

拿到圖片url的列表后,就是下載圖片:

#url前綴
base_url = 'http://image.nmc.cn'
def dlpic(urls):
 # 定義一個文件名稱收集列表
 filenames = []
 for item in urls:
  r = requests.get(base_url + item, headers)
  #文件名就是用斜杠把字符串分隔,取走后后一個字符串
  filename = item.split('/')[-1]
  filenames.append(filename)
  #保存圖片
  with open('wxyt_pic\\' + filename, 'wb') as f:
   f.write(r.content)
  print('已下載:'+item)
 #返回文件名稱列表,用于合成gif
 return filenames

3.合成圖片

# 圖片操作庫
import imageio
 
def makegif(images):
 # 創(chuàng)建空列表,把圖片明反序
 frames = []
 images.reverse()
 # 加載12張圖片
 for item in images:
  frames.append(imageio.imread('wxyt_pic\\'+item))
 # 合成1張gif
 imageio.mimsave('hecheng.gif', frames, 'GIF', duration=1)

4.播放圖片

def playgif(seq=0):
 if set == 0:
  #播放12張合成好的gif
  animation = pyglet.resource.animation('hecheng.gif')
 else:
  pyglet.resource.path = ['wxyt_pic']
  la = os.listdir('wxyt_pic')
  images = []
  for n in la:
   images.append(pyglet.resource.image(n))
  #播放庫存中的所有照片
  animation = pyglet.image.Animation.from_image_sequence(images, period=0.5, loop=True)
 #顯示動畫
 sprite = pyglet.sprite.Sprite(animation)
 windows = pyglet.window.Window(width=sprite.width, height=sprite.height)
 @windows.event
 def on_draw():
  windows.clear()
  sprite.draw()
 pyglet.app.run()

5.整體代碼

import requests
from lxml import etree
import imageio
import re
import pyglet
import os
 
 
# 在腳本同目錄下,新建一個文件夾,存儲當天12張圖
def ckdir():
 if os.path.exists('wxyt_pic') == False:
  os.mkdir('wxyt_pic')
 
 
# 獲取圖片url列表
def getpage(page):
 try:
  r = requests.get(page, headers=headers)
  html = etree.HTML(r.text)
  result = html.xpath('//script[@type="text/javascript"]/text()')[2]
  urls = re.findall('/product.*.JPG', result)
  return urls
 except Exception as e:
  print(e)
 
 
# 下載圖片
def dlpic(urls):
 filenames = []
 for item in urls:
  r = requests.get(base_url + item, headers)
  filename = item.split('/')[-1]
  filenames.append(filename)
  with open('wxyt_pic\\' + filename, 'wb') as f:
   f.write(r.content)
  print('已下載:'+item)
 return filenames
 
 
# 制作gif
def makegif(images):
 frames = []
 images.reverse()
 for item in images:
  frames.append(imageio.imread('wxyt_pic\\'+item))
 imageio.mimsave('hecheng.gif', frames, 'GIF', duration=1)
 
 
# 播放gif
def playgif(seq=0):
 if set == 0:
  #播放12張合成好的gif
  animation = pyglet.resource.animation('hecheng.gif')
 else:
  pyglet.resource.path = ['wxyt_pic']
  la = os.listdir('wxyt_pic')
  images = []
  for n in la:
   images.append(pyglet.resource.image(n))
  #播放庫存中的所有照片
  animation = pyglet.image.Animation.from_image_sequence(images, period=0.5, loop=True)
 #顯示動畫
 sprite = pyglet.sprite.Sprite(animation)
 windows = pyglet.window.Window(width=sprite.width, height=sprite.height)
 @windows.event
 def on_draw():
  windows.clear()
  sprite.draw()
 pyglet.app.run()
 
 
# init
if __name__ == '__main__':
 base_url = 'http://image.nmc.cn'
 page = 'http://www.nmc.cn/publish/satellite/fy2.htm'
 headers = {"user-agent": "firefox"}
 ckdir()
 urls = getpage(page)
 images = dlpic(urls)
 makegif(images)
 # 0只播放今天12張,1播放庫存里所有照片
 playgif(1)

6.最終效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python的組合模式與責任鏈模式編程示例

    Python的組合模式與責任鏈模式編程示例

    這篇文章主要介紹了Python的組合模式與責任鏈模式編程示例,組合模式與責任鏈模式都屬于Python的設計模式,需要的朋友可以參考下
    2016-02-02
  • Python capitalize()函數(shù)的用法詳解

    Python capitalize()函數(shù)的用法詳解

    在Python中,capitalize()將字符串的第一個字符轉換為大寫字母,并將所有其他字符(如果有的話)轉換為小寫,本文就將給大家介紹一下Python capitalize()函數(shù)的使用方法,感興趣的朋友跟著小編一起來看看吧
    2023-07-07
  • python正則表達式的使用

    python正則表達式的使用

    這篇文章主要介紹了python正則表達式的使用,需要的朋友可以參考下
    2017-06-06
  • Python異常處理操作實例詳解

    Python異常處理操作實例詳解

    這篇文章主要介紹了Python異常處理操作,結合實例形式分析了Python異常處理的相關原理、操作語句與使用技巧,需要的朋友可以參考下
    2018-05-05
  • Python基于最小二乘法實現(xiàn)曲線擬合示例

    Python基于最小二乘法實現(xiàn)曲線擬合示例

    這篇文章主要介紹了Python基于最小二乘法實現(xiàn)曲線擬合,涉及Python基于numpy及scipy庫進行曲線擬合操作相關運算技巧,需要的朋友可以參考下
    2018-06-06
  • python調用win32接口進行截圖的示例

    python調用win32接口進行截圖的示例

    這篇文章主要介紹了python調用win32接口進行截圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Python學習之shell腳本的使用詳解

    Python學習之shell腳本的使用詳解

    這篇文章主要為大家分析一個python庫–sh(系統(tǒng)調用),主要內容包括其使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2023-04-04
  • 跟老齊學Python之開始真正編程

    跟老齊學Python之開始真正編程

    通過對四則運算的學習,已經初步接觸了Python中內容,但是到目前為止,還不能算編程,只能算會用一些指令(或者叫做命令)來做點簡單的工作。列位稍安勿躁,下面我們就學習如何編寫一個真正的程序。
    2014-09-09
  • Python2 與Python3的版本區(qū)別實例分析

    Python2 與Python3的版本區(qū)別實例分析

    這篇文章主要介紹了Python2 與Python3的版本區(qū)別,結合實例形式分析了Python2 與Python3的版本使用過程中的各種常見區(qū)別、用法與注意事項,需要的朋友可以參考下
    2020-03-03
  • Unicode和Python的中文處理

    Unicode和Python的中文處理

    在Python語言中,Uincode字符串處理一直是一個容易讓人迷惑的問題。許多Python愛好者經常因為搞不清Unicode、UTF-8還有其它許許多多的編碼之間的區(qū)別而大傷腦筋。本文將介紹Unicode和Python的中文處理的相關知識。下面跟著小編一起來看下吧
    2017-03-03

最新評論

衡山县| 彰化市| 桦川县| 革吉县| 靖宇县| 岫岩| 绩溪县| 金沙县| 邻水| 南康市| 镇原县| 韶关市| 孟连| 台中县| 乳山市| 咸宁市| 阿克苏市| 定兴县| 华阴市| 永仁县| 西乌| 崇礼县| 榆社县| 天台县| 海阳市| 铜梁县| 屏边| 富锦市| 文化| 区。| 金山区| 西盟| 开平市| 彭泽县| 拜城县| 安乡县| 平阳县| 论坛| 贞丰县| 交口县| 河源市|