【Python】作業自動化プログラムの備忘録

Pythonはあまり触ったことがない私ですが、「プログラミングで自動化すること」に興味があったので、ネットで見つけたものや自分で考えたものをこの記事に備忘録として残しておきます。

自動化のメリットとしては、自分が手を動かさずに物事をこなしてくれるところです。プログラム実行中は、離席していてもいいし、別作業をしていてもいいんです。

そんな便利な自動化プログラムをまとめておきます。

こういった方へ向けた記事です
①単純作業を自動化したいと考えている
②プログラミングで自動化したいと考えている
③Pythonでできることを知りたい
目次
プログラム①複数フォルダを自動生成する
プログラム②フォルダ内のファイル名と日時を取得する
プログラム③ブラウザの自動操作
プログラム④Webページの特定タグ内のHTMLを抽出する
プログラム➄

この記事の前に、まずはPythonインストール手順をまとめた下記の記事を見ることをお勧めします。

https://poisoncreation.com/2020/09/09/python-install/

プログラム①複数フォルダを自動生成する

■概要

CSVファイルに作成したいフォルダを記載し、プログラムを実行することで自動でフォルダが作成されます。

■プログラム初心者へ向けて

CSVファイルとは、comma separated valuesの略で、文字列がカンマと改行で区切られたテキストファイルのことをいいます。拡張子は「.csv」です。

CSVファイルは人間が見てもただの文字列が書き込まれたテキストファイルですが、機械がそれを読むことで様々な効果を発揮します。

例えば、データベースへデータを一括して登録するときに使用します。

■実行準備

(1)CSVファイルを用意する。

(1-1)Excelを新規で起動する。

(1-2)生成したいフォルダを記載する。

(1-3)「名前を付けて保存」より、保存場所を「デスクトップ\Python_Auto」とし、ファイル名を「programlist.csv」とします。

(1-4)「データ損失の可能性」といった警告は無視して問題ありません。

(2)プログラムを用意する。

(2-1)Python IDLE(Python 3.8.5 Shell)を起動し、下記コードをコピペします。

デフォルトで入力されているバージョン情報や「>>>」は全て削除しておいた方がいいかもしれません。「invalid syntax」というエラーがでて実行がうまくいきません!

ファイル名は「MakingFolder.py」とし、保存場所は「デスクトップ\Python_Auto」とします。

import os
import csv

csv_path = "programlist.csv"

with open(csv_path, encoding="cp932") as f:
  reader = csv.reader(f)
  for row in reader:
    folder_name = row[0] + '_' + row[1]
    if not os.path.exists(folder_name):
      os.mkdir(folder_name)

■実行

(1)下記いずれかの操作でPythonファイルを実行します。

  • ファイル「MakingFolder.py」をダブルクリックする。
  • ファイル「MakingFolder.py」Edit画面をIDLEで起動し、「Run」⇒「Run Module」をクリックする。
  • ファイル「MakingFolder.py」Edit画面をIDLEで起動し、「F5」キーを押下する。

(2)下記のようにフォルダが生成されました。実行にかかる時間は1~2秒程度です。

■補足

  • CSVファイルがサーバ上(共有ファイル上)にある場合は、「csv_path」に次のようにパスを指定する必要があります。
    r“\\(ホストコンピュータ名\共有フォルダ名\ABC\programlist.csv)”
    ※先頭に「r」を付けるraw文字列は、クォーテーションに囲まれた文字列をそのまま表示するという意味があります。
  • CSVファイルを読み込む際、1行飛ばしなどを行わせたい場合は、「next(reader)」を適する箇所に入れてあげる必要があります。

プログラム②フォルダ内のファイル名と日時を取得する

■概要

フォルダ内の「ファイル名」「作成日時」「更新日時」を自動取得し、CSVファイルに出力します。(出力されたファイルはExcelでも起動できます)

■プログラム初心者へ向けて

上記「プログラム①」にも記載しましたが、CSVファイルとは、comma separated valuesの略で、文字列がカンマと改行で区切られたテキストファイルのことをいいます。拡張子は「.csv」です。

CSVファイルは人間が見てもただの文字列が書き込まれたテキストファイルですが、機械がそれを読むことで様々な効果を発揮します。

例えば、データベースへデータを一括して登録するときに使用します。

■実行準備

(1)プログラムを用意する。

(1-1)Python IDLE(Python 3.8.5 Shell)を起動し、下記コードをコピペします。

デフォルトで入力されているバージョン情報や「>>>」は全て削除しておいた方がいいかもしれません。「invalid syntax」というエラーがでて実行がうまくいきません!

ファイル名は「OutpuFileInfo.py」とし、保存場所は「デスクトップ\Python_Auto2」とします。

import os
import csv
import time

output_file = 'output.csv'
date_format = '%Y/%m/%d %H:%M:%S'

file_list = []

for file in os.listdir("."):
  # ファイルかどうか
  is_file = os.path.isfile(file)
  # このpyファイル自身でないか
  not_myself = os.path.basename(__file__) != file
  # 出力用CSVファイルでないか
  not_output_file = output_file != file

  if is_file and not_myself and not_output_file:
    # ファイル作成時刻
    time_crt = time.strftime(date_format,time.localtime(os.path.getctime(file)))
    # ファイル更新時刻
    time_mod = time.strftime(date_format, time.localtime(os.path.getmtime(file)))

    file_list.append([file, time_crt, time_mod])

    with open(output_file, "w", newline="") as f:
     csv_writer = csv.writer(f)
     for r in file_list:
       csv_writer.writerow(r)

(2)フォルダ「Python_Auto2」内にファイルを用意する。

(2-1)下記のように、ファイルを用意します。

■実行

(1)下記いずれかの操作でPythonファイルを実行します。

  • ファイル「MakingFolder.py」をダブルクリックする。
  • ファイル「MakingFolder.py」Edit画面をIDLEで起動し、「Run」⇒「Run Module」をクリックする。
  • ファイル「MakingFolder.py」Edit画面をIDLEで起動し、「F5」キーを押下する。

(2)下記のように「output.csv」が生成されました。実行にかかる時間は1~2秒程度です。

■補足

・上記では「ファイル名」「作成日時」「更新日時」を取得する例を記載しましたが、他にも次の項目を取得することが可能です。

ファイル情報取得方法
拡張子os.path.splitext(ファイル名)[1]
最後にアクセスした日時os.path.getatime(ファイル名)
作成日時os.path.getctime(ファイル名)
更新日時os.path.getmtime(ファイル名)
フルパスos.path.abspath(ファイル名)
ファイルサイズ(単位:Byte)os.path.getsize(ファイル名)

日時を取得する際は、日本時間の書式で出力するために次のようにする必要があります。
time.strftime(dateFormat,time.localtime(ここに記載)))

プログラム③ブラウザの自動操作

■概要

ブラウザ(Google Chrome)の検索を自動で複数行う。

実行すると、まずユーザに「地域」の入力が求められます。例えば「茨城」と入力してEnterキーを押下します。すると、「茨城 ○○○」(○○○はプログラム内であらかじめ決めておきます)の検索ワードで自動検索を行います。「検索ワードが入力される→検索される→別タブを起動する→検索ワードが入力される→検索される→別タブを起動する→…」という流れを自動で行います。

■プログラム初心者へ向けて

ダウンロードするものが多めですので、手順をしっかり理解したうえでお願いします。

■実行準備

(1)Chrome用のWebDriverをダウンロードする。

(1-1)まず下記URLからダウンロードサイトを起動します。

https://sites.google.com/a/chromium.org/chromedriver/downloads

(1-2)赤枠の中から自身のChromeのバージョンのものをクリックします。

※Chromeのバージョンは下記のようにして確認できます。(Chromeの自動更新により、バージョンが変わったときはドライバも新しくする必要があります。エラー:selenium.common.exceptions.sessionNoCreatedException)

(1-3)WindowsのPCを使用している方であれば、下記「chromedriver_win32.zip」をクリックします。すると、圧縮ファイルがダウンロードされるので、デスクトップなどで解凍します。

(1-4)次のようなフォルダ構成でフォルダを作成し、指定の場所に解凍したdriverを配置します。

Python_Auto3 ←フォルダ(フォルダ名は任意)
   ├ driver ←フォルダ
   |     ├ chromesriber.exe ←解凍したdriver
   |
  ├ これから作成するPythonプログラム

(2)Seleniumu(ブラウザ操作のためのライブラリ)をインストールする。

(2-1)コマンドプロンプトを起動し、「py -m pip install selenium」を入力し、Enterキーを押下すればOKです。

コマンドプロンプトは次の方法で起動できます。
・「Windowsキー」+「R」キーを押下→「cmd」と入力→「Enter」キー押下
・「Windowsキー」押下→検索で「cmd」と入力→コマンドプロンプトを選択

また、実行前にチェンジディレクトリでフォルダ「Pyton_Auto3」を指定したほうがいいかもしれません。フォルダ「Pyton_Auto3」とは、上記(1-4)の一番上の階層のフォルダのことです。

(3)プログラムを用意する。

(3-1)下の図に従い、Pythonファイルを作成します。ファイル名は「searchProgram.py」とします。

Python_Auto3
   ├ driver
   |    ├ chromesriber.exe
   |
 ├ ここのPythonプログラム

(3-2)コードは次のようになります。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# WebDriverオブジェクトの作成
# この変数chromeにアクセスすることで操作可能になります
chrome = webdriver.Chrome("./driver/chromedriver.exe")

location = input("地域入力:") # ユーザに入力を求める
seachItem = ["居酒屋", "バー", "チェーン店", "飲食店"
, "海", "湖", "池", "海浜公園"]

for i, item in enumerate(seachItem):
  if i > 0:
    # 新しいタブ(JavaScriptのコード)
    chrome.execute_script("window.open('','_blank');")
    chrome.switch_to.window(chrome.window_handles[i])

  # Googleを起動する
  chrome.get("https://www.google.co.jp")

  # 検索ワード入力 
  # GoogleTOPページの検索ワード入力欄のname属性が「q」
  search_box = chrome.find_element_by_name("q")
  search_words = location, item
  search_box.send_keys(" ".join(search_words))

  # 検索実行
  search_box.send_keys(Keys.RETURN)
  print(chrome.title)

# 先頭のタブに戻る
chrome.switch_to.window(chrome.window_handles[0])

■実行

(1)「searchProgram.py」をダブルクリックし、実行します。

(2)「地域入力:」と入力を求められるので、「茨城」と入力してEnterキーを押下します。

(3)自動で次々と検索が行われます。そして・・・

(4)20秒前後で8つのタブごとに検索が行われました。最初のタブが選択された状態になっています。

■補足

・リンクをクリックする

・スクリーンショットと撮る

プログラム④Webページの特定タグ内のHTMLを抽出する

■概要

Webページ(この記事)のh1多タグ内のHTMLを抽出します。

自動化とは呼べない内容なので、スキップしてください。

■プログラム初心者へ向けて

インストールするライブラリが多めですので、手順をしっかり理解したうえでお願いします。

■実行準備

(1)Webページを取得するライブラリ「Requests」をインストールします。

(1-1)コマンドプロンプトにて下記を実行します。

py -m pip install requests

(2)HTMLから情報を抽出するためのライブラリ「Beautiful Soup」をインストールします。

(2-1)コマンドプロンプトにて下記を実行します。

py -m pip install beautifulsoup4

(3)プログラムを用意します。

(3-1)下記プログラムを任意のファイル名(拡張子は.py)で保存します。

import requests
from bs4 import BeautifulSoup

# この記事のWebページ情報
req = requests.get("https://poisoncreation.com/2020/09/09/【python】作業自動化プログラムの備忘録/")

# Body
s = BeautifulSoup(req.content, "html.parser")

# ニュース一覧のテキストのみ抽出
print(s.select("h1"))

■実行前に動作確認しておきたいプログラム(任意)

(1)上記2つのライブラリそれぞれがきちんとインストールされているか確認するためのプログラムを載せておきます。この動作を確認したうえで次の「■実行」に進むことをお勧めします。

(1-1)ライブラリ「Request」を使用した単独プログラムのサンプルです。

import requests

req = requests.get('https://news.yahoo.co.jp')

print(req.headers)
print("----------")
print(req.encoding)
print(req.content)

実行すると、次の情報(青文字)を取得できます。

(1-2)続いて、ライブラリ「Beautiful Soup」を使用した単独プログラムのサンプルです。

from bs4 import BeautifulSoup

h = "<h1>Kashimura</h1>,<h1>freelance<h1>,<h2>abc</h2>"

soup = BeautifulSoup(h, "html.parser")

print(soup.select("h1"))

実行すると、次の情報(青文字)を取得できます。

ちなみに上記3行目「BeautifulSoup()」の第二引数「html.parser」はパーサーといい、「なにをもとに解析するか」を示しています。今回の場合、HTMLをもとに解析するということになります。

■実行

(1)実行すると、下記青文字が出力されます。

次回、これを応用したスクレイピングのプログラムを投稿したいと思います。

この記事は順次更新していきます。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中