日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

igs网站里爬o文件和广播星历和tkinter使用

發(fā)布時(shí)間:2024/3/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 igs网站里爬o文件和广播星历和tkinter使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 基礎(chǔ)要求
  • 題目要求
  • 代碼如下
  • 結(jié)果如下

基礎(chǔ)要求

莫煩python–基礎(chǔ)
python基礎(chǔ)學(xué)習(xí)-個(gè)人博客
Tkinter 學(xué)習(xí)

題目要求

需求就是我要從這個(gè)網(wǎng)站里爬o文件和廣播星歷
武漢大學(xué)IGS數(shù)據(jù)中心

代碼如下

import time import urllib from tkinter import * import requests from bs4 import BeautifulSoup import os import random from tkinter.ttk import *# 假設(shè)是 headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", }# 文件存儲(chǔ)位置 dir = "E:\data"s = requests.Session()# 開始日期# igs觀測站列表 select = []# 被選擇的廣播站 choose = ""def download(download_list, name):'''下載文件到指定位置:param name: 文件夾名稱:param download_list::return:'''path = os.path.join(dir, name)# 如果下載路徑不存在,則創(chuàng)建文件夾if not os.path.exists(path):# 創(chuàng)建文件夾os.makedirs(path)txt.insert(INSERT, "dir文件路徑不存在,正在創(chuàng)建中\(zhòng)n")txt.insert(END, name + "下載開始,請(qǐng)稍等\n")for url in download_list:try:filename = os.path.join(path, get_randon_string() + get_filename(url))print("下載了--" + filename + "\n")urllib.request.urlretrieve(url, filename=filename)except Exception as e:txt.insert(END, "對(duì)不起下載失敗--可能存在相同名字的文件名,或者網(wǎng)絡(luò)問題")print(e)txt.insert(END, name + "下載結(jié)束\n")def get_randon_string():'''隨機(jī)生成數(shù)字類型字符串:return: 隨機(jī)字符串'''return str(random.randint(1, 50))def get_filename(url_str):'''根據(jù)url--獲取文件名稱:param url_str: url:return:'''try:return url_str[url_str.rfind('/') + 1:]except:print("文件名稱尋找失敗")return str(random.randint(1, 700)) + ".gz"def get_obs(choose, start_date, end_date):'''獲取obs觀測值:param choose: 選擇:param start_date: 開始時(shí)間:param end_date: 截止時(shí)間:return:'''if choose.strip() == '':txt.insert(END, "選擇的廣播站錯(cuò)誤\n")if not is_valid_date(start_date):txt.insert(END, "起始時(shí)間輸入錯(cuò)誤\n")if not is_valid_date(end_date):txt.insert(END, "起始時(shí)間輸入錯(cuò)誤\n")url = "http://www.igs.gnsswhu.cn/index.php/home/data_product/get_obs_data.html?src=IGS&start_date=" + start_date + "&end_date=" + end_date + "&sites%5B%5D=" + choose + "&order=site&format=o"data = s.get(url, headers=headers)if data.text.strip() == '':txt.insert(END, "廣播星歷沒有任何數(shù)據(jù)\n")returnsubject = BeautifulSoup(data.text, "html.parser")download_list = []for item in subject.select(".site-item"):# 添加所有符合條件的下載地址temp = item.select("a")[0]["href"]download_list.append("http://wz-igs.oss-cn-beijing.aliyuncs.com/" + temp[temp.find('=') + 1:])# 開始下載download(download_list, "obs")def get_broadcast_ephemeris(start_date, end_date):'''獲取廣播新歷:param start_date: 開始時(shí)間:param end_date: 截止時(shí)間:return:'''if not is_valid_date(start_date):txt.insert(END, "起始時(shí)間輸入錯(cuò)誤\n")if not is_valid_date(end_date):txt.insert(END, "起始時(shí)間輸入錯(cuò)誤\n")URL = "http://www.igs.gnsswhu.cn/index.php/home/data_product/get_brdc_data.html?src=IGS&start_date=" + start_date + "&end_date=" + end_datedata = s.get(URL, headers=headers)if data.text.strip() == '':print("廣播星歷沒有任何數(shù)據(jù)")returnsubject = BeautifulSoup(data.text, "html.parser")# 下載鏈接download_list = []for item in subject.select(".am-success"):# 添加所有符合條件的下載地址temp = item.select("a")[0]["href"]download_list.append("http://wz-igs.oss-cn-beijing.aliyuncs.com/" + temp[temp.find('=') + 1:])# 開始下載文件download(download_list, "broadcast")def is_valid_date(times):'''判斷日期格式是否正確:param times: 字符串的日期:return:'''try:time.strptime(times, "%Y-%m-%d")except:txt.insert(END, "輸入日期的格式不合法哦,請(qǐng)重新檢查\n")return Falsereturn Truedef calc(event):'''點(diǎn)擊組合框的按鈕:param event: 時(shí)間信息:return:'''global choosechoose = select[comb.current()]def init():'''初始化:return:'''url = "http://www.igs.gnsswhu.cn/index.php/home/data_product/igs.html"data = s.get(url, headers=headers)subject = BeautifulSoup(data.text, "html.parser")for item in subject.select("#sites-selector option"):select.append(item.text)start = "2021-10-01" end = "2021-10-26"init() root = Tk() root.title('下載程序的窗口') root.geometry('500x400') # 這里的乘號(hào)不是 * ,而是小寫英文字母 x lb1 = Label(root, text='請(qǐng)輸入日期正確的日期') lb1.place(relx=0.5, rely=0.1, relwidth=0.5, relheight=0.1)# 第一個(gè)輸入框--起始時(shí)間 inp1 = Entry(root) inp1.place(relx=0.5, rely=0.2, relwidth=0.2, relheight=0.1)# 第二個(gè)輸入框---截止時(shí)間 inp2 = Entry(root) inp2.place(relx=0.8, rely=0.2, relwidth=0.2, relheight=0.1)btn1 = Button(root, text='下載.o 文件', command=lambda: get_obs(choose, inp1.get(), inp2.get())) btn1.place(relx=0.5, rely=0.4, relwidth=0.2, relheight=0.1)# 方法二利用 lambda 傳參數(shù)調(diào)用run2() btn2 = Button(root, text='下載廣播星歷', command=lambda: get_broadcast_ephemeris(inp1.get(), inp2.get())) btn2.place(relx=0.8, rely=0.4, relwidth=0.2, relheight=0.1)# 復(fù)選框 comb = Combobox(root, textvariable="選擇測試站", values=select) comb.place(relx=0.1, rely=0.2, relwidth=0.2, relheight=0.1) comb.bind('<<ComboboxSelected>>', calc)# 在窗體垂直自上而下位置60%處起,布局相對(duì)窗體高度40%高的文本框# scroll = Scrollbar(root) # scroll.place(relx=0.1, rely=0.6, relwidth=0.8, relheight=0.4) txt = Text(root) txt.place(relx=0.1, rely=0.6, relwidth=0.8, relheight=0.4) # scroll.config(command=txt.yview) # txt.config(yscrollcommand=scroll.set) # txt.pack()txt.insert(END, "程序開始\n") root.mainloop()

結(jié)果如下

總結(jié)

以上是生活随笔為你收集整理的igs网站里爬o文件和广播星历和tkinter使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。