本記事ついて
本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。
参考資料
https://www.udemy.com/course/python-kaizen/learn/lecture/26849736#overview
環境
以前はCloud9を使用していましたが
Windows 10
Jupyter Notebook
そのため構文に少し違いがあります。
気を付けてください
目的
Webページにアクセスして必要なファイルを取ってくる
そして自分の指定フォルダに移動する。
Webページを操作
必要なライブラリ
seleniumとは
Webブラウザで行うクリック操作やキーボード入力などをプログラム上から自動で操作できるようにしたライブラリ
!pip install selenium
webdriver_managerとは
Webブラウザのバージョンに合わせて適切なドライバを自動的にダウンロードしてくれる
!pip install webdriver_manager
インポート
from selenium import webdriver
seleniumの機能からwebdriverの一部の機能を使うと意味になる
もう一つ
from webdriver_manager.chrome import ChromeDriverManager
これはブラウザ使うのにドライバーが必要になるのでChromeDriverが必要になるため
また時間たってバージョンが変わってもそれを合わせるため
ブラウザを立ち上げる
browser=webdriver.Chrome(ChromeDriverManager().install())
これでブラウザが立ち上がったと思います。
Webページにアクセス
試しにyahooにアクセス
browser.get("https://www.yahoo.co.jp/")
Webページを操作する
yahooの検索欄に自動で検索を行う
ポイント
・HTMLソースコードを把握して必要な個所を操作
今回は検索欄なのでそこのコードを確認
name=pだとわかったので
box=browser.get("https://www.yahoo.co.jp/")
変数に代入して
boxに調べる文字を入力する
box.send_keys("python")
今度は検索ボタンを押したいと思います
検索ボタンは
classにより構成されており、classは他の所にも使われている可能性があるのでXpathをコピー
search_button=browser.find_element_by_xpath("/html/body/div/div[1]/header/section[1]/div/form/fieldset/span/button")
search_buttonにボタンの情報を入れて
search_button.click()
これでブラウザの操作ができました。
ブラウザを閉じる
browser.close()
これで閉じると思います。
ファイルを取ってくる
適当なファイルをダウンロードできるサイトを選んでください
(自分は厚生労働省のサイトを選べました)
ではそこまでアクセスします
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
browser=webdriver.Chrome(ChromeDriverManager().install())
browser.get("https://www.mhlw.go.jp/stf/covid-19/open-data.html")
そこにあるファイル(自分の場合はPCR検査実施人数)は
クリックしてダウンロードできる仕組みになっているので
pcr = browser.find_element_by_xpath("/html/body/div[1]/main/div[2]/div/div/div[3]/div/p/a")
pcr.click()
ファイルを操作してみる
globとは
glob関数を使うことで特定のパターンにマッチするファイルを取得することができます
インポート
from glob import glob
ファイル情報を取得
先ほどのファイルはダウンロード先にあるので
ダウンロードの中身を取得
glob(r"\Users\ファルダの名前\Downloads/*")
rは文字列として扱う(Windowsの人は必要みたいです)
*(アスタリスク)ワイルドカードといってすべてをさす
もし捜索範囲を狭めたい場合などは拡張子をつけるといいと思います。
glob(r"\Users\ファルダの名前\Downloads/*.csv")
ダウンロードが新しい物を選別できるようにする
ダウンロードに入っているファイル情報を変数に格納
files=glob(r"\Users\ファルダの名前\Downloads/*")
os操作するため
osをインポート
import os
そして
sorted関数を使用
構文
sorted(リストなど [,key] [,reverse])
⚫︎ リストなど
(ソート、リスト、辞書、タプルなどのシーケンス)
⚫︎ key
順序を決定するために実行する関数
(デフォルトはなし)
⚫︎ reverse
ブール値となり、falseは昇順で並べ替え、trueは降順で並べ替えられる
(デフォルトはfalse)
sorted情報を変数に格納
sorted_files=sorted(files,key=os.path.getmtime)
最期のファイルを指定する。
sorted_files[-1]
指定したファイルを移動する
import shutil
shutil.move(sorted_files[-1],os.getcwd())
shutil
モジュールはファイルやファイルの集まりに対する高水準の操作方法を多数提供します。特にファイルのコピーや削除のための関数が用意されています
さきほど指定した(一番最近にダウンロードしたファイル)を自分の今使っているファイルに移動させました