あなたの誕生日の宇宙はどれほど美しいですか?ガジェットを作成するPythonでワンクリックで画像を照会!

NASA(NASA)が提供するWebサイト(ハッブル望遠鏡の30周年を祝うために)を見つけるためにリンクをクリックしてください。ハッブル望遠鏡が誕生日に撮影した宇宙の写真。ただし、これはおそらく、多すぎる人やいくつかの国内的要因によるものであり、Webページの読み込みが遅くなります。したがって、Xiaobencongは誰もが体験できるクエリソフトウェアを作成しました。

WeChat公式アカウントへの元のリンク

必要なPythonライブラリは、PyQt5、requests、lxml、openpyxl、pillow、およびPythonに付属するいくつかのライブラリです。まずインターフェースを見てください:

それはどのように機能しますか?

1. まず、ウェブサイトからExcelフォームをダウンロードできます。フォームはおおよそ次のようになります。

v2-8cf439d092eaf846ddac21c2ac31d08d_r.jpg

これには、ハッブル望遠鏡が各日に取得した宇宙に対応する紹介ページへのリンクが含まれているため、この表を読む必要があります。

'''导入中的全年数据'''
def loadFullYearData(self, filepath):
   full_year_data = {}
   excel_data = load_workbook(filepath)
   sheet = excel_data.get_sheet_by_name('365')
   for idx, row in enumerate(sheet.rows):
       if idx > 366: break
       if idx > 0: full_year_data[row[0].value.strftime('%Y-%m-%d')[5:]] = row[4].value
   return full_year_data

2.次に、ユーザーが入力した日付に従って、対応する紹介ページのリンクを取得します。

url = self.full_year_data.get(key)

3. 紹介ページのリンクを取得したら、requestsライブラリからリクエストし、xpathを使用して、下の赤いボックスに示すように、必要なデータ、つまり写真のリンクと写真の紹介を抽出します。

xpathのパスはブラウザーで直接コピーでき、コードは次のように実装されます。

res = requests.get(url, headers=headers)
html_root = etree.HTML(res.text)
html = html_root.xpath('//*[@id="main-content"]/section/section/div[1]/div/div/div[2]')[0].xpath('./p')
# 提取介绍
intro = []
for item in html:
    intro.append(item.xpath('text()')[0])
  # 提取图片链接并下载
  idx = -1
  while True:
     image_url = html_root.xpath('//*[@id="main-content"]/section/section/div[1]/div/div/div[1]/div/a')[idx]
     image_url = ('https:' + image_url.xpath('@href')[0]).replace('imgsrc.hubblesite.org/hvi', 'hubblesite.org')
     if image_url.split('.')[-1] == 'jpg':
         break
     idx -= 1

4. 次に、画像のリンクに従ってダウンロードします(Webサイトの画像は読み込みに時間がかかりすぎるため、自分で再試行を設定することをお勧めします)。

filename = 'tmp.%s' % image_url.split('.')[-1]
f = open(filename, 'wb')
session = requests.Session()
retry = Retry(connect=10000, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
res = session.get(image_url, headers=headers, stream=True, verify=False)
for chunk in res.iter_content(chunk_size=1024): f.write(chunk)
f.close()

5. 最後に、PyQt5を使用してシンプルなビジュアルインターフェースを記述し、クローラー関数を追加します。また、pyinstallerライブラリを使用すると、コードをexeファイルにパッケージ化して簡単に使用できます。また、pyinstallerモジュールの効率的な使用方法を練習することもできます。

画像表示:

これらは、「小さなソフトウェアプロセス、マイクロチャネル公共番号の画像を作成するためのPythonのクエリある金融乗客プログラミングを学ぶために舞台裏返信」「誕生日の画像を取得するには、」ソースコードを

WeChat公式アカウントへの元のリンク

マイクロチャンネル公衆番号へようこそ注意:Xiaobenコング:金融乗客、著者のプログラミングを学びます

 

11件の元の記事を公開 賞賛された11件 5718を訪問

おすすめ

転載: blog.csdn.net/weixin_39270299/article/details/105224938