NASA(NASA)が提供するWebサイト(ハッブル望遠鏡の30周年を祝うために)を見つけるためにリンクをクリックしてください。ハッブル望遠鏡が誕生日に撮影した宇宙の写真。ただし、これはおそらく、多すぎる人やいくつかの国内的要因によるものであり、Webページの読み込みが遅くなります。したがって、Xiaobencongは誰もが体験できるクエリソフトウェアを作成しました。
必要なPythonライブラリは、PyQt5、requests、lxml、openpyxl、pillow、およびPythonに付属するいくつかのライブラリです。まずインターフェースを見てください:
それはどのように機能しますか?
1. まず、ウェブサイトからExcelフォームをダウンロードできます。フォームはおおよそ次のようになります。
これには、ハッブル望遠鏡が各日に取得した宇宙に対応する紹介ページへのリンクが含まれているため、この表を読む必要があります。
'''导入中的全年数据'''
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コング:金融乗客、著者のプログラミングを学びます