- 1. 【備忘録】Python×Seleniumでデータ収集を自動化
- 2. Output練習のためProjectEulerを解いてみる #1
- 3. 【Python】unicodedata.normalize(‘NFKC’)について。互換分解してから再度合成するとは?
- 4. フラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)を26アルファベットに変換するPythonコード(Pythonista 3対応)
- 5. 26アルファベットをフラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)に変換するPythonコード(Pythonista 3対応)
- 6. Pythonで『The MagPi』の全号を一括ダウンロードするスクリプト
- 7. スマートリモコンをChatGPT(Function Calling)を使ってよりスマートにしよう!
- 8. EC2 amazon linux にPythonを入れてみよう 入門
- 9. obsws-pythonのテキスト編集で沼った話
- 10. [自分用]Xで指定したテキストを含むハッシュタグ付き等の投稿を検索・取得する
- 11. LinuxでPythonの仮想環境(venv)を作る方法
- 12. はじめてのPytest
- 13. めも(WIN10)
- 14. Python3 エンジニア認定基礎試験 合格体験記
- 15. RaspberryPiを使って入退室管理システム作ってみた!
- 16. Streamlitの環境でPython3勉強の記録
- 17. データ拡張
- 18. A/Bテストで必要なサンプル数を見積もる方法【帰無仮説、検出力、有意水準】
- 19. FAST API で使うコマンド
- 20. 複数のサイズのアイコンを一括で作成
【備忘録】Python×Seleniumでデータ収集を自動化
# はじめに
Pythonの「requests」と「bs4(beautifulsoup)」を使って、ウェブサイトからデータをスクレイピングしようとしましたが、そのサイトは動的にデータを表示するタイプだったため、思うようにデータを取得することができませんでした。そこで、「Selenium」を試したところ、うまくスクレイピングができましたので、備忘録として「Python × Selenium」を使ったスクレイピングの方法をまとめておきたいと思います。
# 想定する読者
* Python × Seleniumでデータ収集を自動化したい方# Seleniumとは?
Seleniumは、ウェブブラウザを自動で操作するためのオープンソースのテスト自動化ツールです。ウェブアプリケーションの機能テストやスクレイピング、ブラウザ操作の自動化に使用されます。Seleniumは、開発者やテスターが実際にブラウザを使って行う操作をプログラムでシミュレートすることができます。
**主な特徴**
1. ブラウザ自動操作
* Seleniumを使用すると、ブラウザで行う操作(ページの読み込
Output練習のためProjectEulerを解いてみる #1
本日から、コーディング力の向上とアウトプットする力を高めるために、毎週一問ProjectEulerの問題を解いてみようと思います。いろいろ至らない点もあると思いますが、ご容赦いただければと思います。
# ProjectEulerとは
数学の問題をプログラムを用いて解くサイトです。最初の100問までは答えを掲載してもよいという規則があるので、そこまで記事を書くことを目指していこうと思います。#### マイルール
– 拡張性を持たせる
条件として、N <= 1000000 とかがあるのですが、その条件を厳しくしても成り立つようなコードを書いていこうと思います
– 一つのコードで完結させる
前処理とかが必要な問題でも、なるたけ一つのコードで完結させるようなコードを書きたいと思います。
– 読みやすいコードを書く
基本的には、コーディング規約とリーダブルコードに従ったコードを書いていきます。では早速解いていこうと思います。
# #1 Multiples of 3 or 5
問題文 If we list all the natural numbers below 10 that ar
【Python】unicodedata.normalize(‘NFKC’)について。互換分解してから再度合成するとは?
# 概要
Pythonの`unicodedata.normalize`の`NFKC`を使ってみたので、サンプルコードと共に紹介します。# Unicodeの正規化のNFKCとは?
`unicodedata.normalize`は、そのまま「Unicodeの正規化」という意味です。
[Wikipedia](https://ja.wikipedia.org/wiki/Unicode%E6%AD%A3%E8%A6%8F%E5%8C%96)は以下のように説明されています。> Unicode正規化(ユニコードせいきか、英語: Unicode normalization)とは、等価な文字や文字の並びを統一的な内部表現に変換することでテキストの比較を容易にする、テキスト正規化処理の一種である。
Pythonで使う`unicodedata`モジュールとは、Unicode文字列を正規化するためのライブラリ(関数)です。
また、`NKFC`について、[公式ドキュメント]()には以下のように記載がありました。
> 正規形 KC (NFKC) は、互換分解を適用してから、標準分解を適用します。
フラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)を26アルファベットに変換するPythonコード(Pythonista 3対応)
# はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。# はじめに
このコードは**Python 3**と**Pythonista 3**に対応しています。本コードはクリップボード内にある通常のアルファベット(ä, ö, üなどには未対応)をUnicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換するコードです。# 本コードを実行するとどうなるか
本コードは
1. クリップボード内のある通常のアルファベットを検知
1. Unicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換
1. クリップボードに再コピーを行います。
# 例
実行前のクリップボード:
𝔚𝔢𝔩𝔠𝔬𝔪𝔢 𝔱𝔬 𝔱𝔥𝔢 𝔈𝔫𝔤𝔩𝔦𝔰𝔥-𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢 𝔚𝔦𝔨𝔱𝔦𝔬𝔫𝔞𝔯𝔶, 𝔞 𝔠𝔬𝔩𝔩𝔞𝔟𝔬𝔯𝔞𝔱𝔦𝔳𝔢 𝔭𝔯𝔬𝔧𝔢𝔠𝔱 𝔱𝔬 𝔭𝔯𝔬𝔡𝔲𝔠𝔢 𝔞 𝔣𝔯𝔢𝔢-𝔠𝔬𝔫𝔱𝔢𝔫𝔱 𝔪𝔲𝔩𝔱𝔦𝔩𝔦𝔫𝔤𝔲𝔞𝔩 𝔡𝔦𝔠𝔱𝔦𝔬𝔫𝔞𝔯𝔶. ℑ𝔱 𝔞𝔦𝔪𝔰 𝔱𝔬 𝔡𝔢𝔰𝔠𝔯𝔦𝔟𝔢 𝔞𝔩𝔩 𝔴𝔬𝔯𝔡𝔰 𝔬𝔣 𝔞𝔩𝔩 𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢𝔰 𝔲𝔰𝔦𝔫𝔤 𝔡𝔢𝔣𝔦𝔫𝔦𝔱𝔦𝔬
26アルファベットをフラクトゥーア(フラクトゥール,亀甲文字,ブラックレター)に変換するPythonコード(Pythonista 3対応)
# はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。# はじめに
このコードは**Python 3**と**Pythonista 3**に対応しています。本コードはクリップボード内にある通常のアルファベット(ä, ö, üなどには未対応)をUnicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換するコードです。# 本コードを実行するとどうなるか
本コードは
1. クリップボード内のある通常のアルファベットを検知
1. Unicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換
1. クリップボードに再コピーを行います。
# 例
実行前のクリップボード:
Welcome to the English-language Wiktionary, a collaborative project to produce a free-content multilingual dictionary. It aims to describe all words of all languages using definitio
Pythonで『The MagPi』の全号を一括ダウンロードするスクリプト
「The MagPi」は、Raspberry Piに関する情報を提供するマガジンです。チュートリアル、プロジェクトのアイデア、最新情報などを掲載し、コーディングやロボティクス、DIYエレクトロニクスに興味のある人々にとって役立つ内容が満載です。
The MagPi” のPDFは公式サイトで無料でダウンロードできます。最新号からバックナンバーまで、Raspberry Piに関する様々な記事やプロジェクトが掲載されています。公式サイトを訪れて、直接ダウンロードしてください。
Link: https://magpi.raspberrypi.com/issues
“`python:download_magpi_all_issues.py
# 『The MagPi』雑誌の全号を一括ダウンロードするPythonスクリプト
import webbrowser
from time import sleep as wait# 1から144までの範囲でループを実行
for i in range(1, 145):
# 号のダウンロードURLを生成
url = f”https://
スマートリモコンをChatGPT(Function Calling)を使ってよりスマートにしよう!
# スマートリモコンをよりスマートに!?
声から操作ができてしまうスマートリモコンですが、文脈から意図を認識するというところまでではないようです。そこで、今回はChatGPTのFunction Callingと呼ばれる機能を使って、人の意図をくみ取って、家電を操作してくれる装置を作ってみたいと思います。
実際の処理の流れとしては、以下になります。
1. プロンプトをChatGPTのAPIへ渡し、GPTにどの家電をどのように操作するのか判断してもらう(今回)
2. ChatGPTの判断結果から、ラズパイが赤外線で家電を操作今回はプロンプトを入力して、特定のスクリプトをたたくところまでのポイントとなった部分を紹介します。実際のコードは、GitHubにあげています。(https://github.com/arumi123/homebridge/tree/develop)
また、結果だけ見たいという方は、実際に呼び出してみよう!まで進んでください。
# Function Callingとは
人が入力した文字列(プロンプト)から、ChatGptが意図を読み取り必要な関数やAPIを
EC2 amazon linux にPythonを入れてみよう 入門
AWS EC2 インスタンスに Python をインストールする方法について説明します。以下の手順に従ってください。
### Amazon Linux 2 の場合
1. **パッケージリストの更新**:
“`bash
sudo yum update -y
“`2. **Python 3 のインストール**:
“`bash
sudo yum install python3 -y
“`### Ubuntu の場合
1. **パッケージリストの更新**:
“`bash
sudo apt update
“`2. **Python 3 のインストール**:
“`bash
sudo apt install python3 -y
“`3. **pip のインストール**:
“`bash
sudo apt install python3-pip -y
“`### Python と pip のバージョン確認
インストールが完了したら、以下のコマンドでバージョンを確認で
obsws-pythonのテキスト編集で沼った話
## obsws-pythonとは
obsws-pythonとは、OBS StudioのWeb Socketを使って
プログラムから色々なOBS上の操作ができるライブラリです。https://pypi.org/project/obsws-python/1.1.0/
…と言っても[当該ライブラリのGitHub](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md)を見てもいまいちわからなかった上に日本語の情報がかなり少なかったので非常に沼りました。
本記事では数ある機能の中でも主に**テキストソースの編集**にフォーカスして、私が確認できた内容を残そうと思います。`obsws-python`は以下でインストール可能です。
“`bash
pip install obsws-python
“`:::note info
結果だけ知りたい方はGitHubに概要とコードサンプルを載せているので[こちら](https://github.com/t4ned4/obsws-
[自分用]Xで指定したテキストを含むハッシュタグ付き等の投稿を検索・取得する
# 細々した話
## Basicプランの課金タイミングについての注意
1ヶ月100ドルと書いてあったが、登録したらそこで「1ヶ月分」課金されるわけではなかった(2024年9月時点での報告)。
* 最初に1週間分課金された(日割り)。
* 1週間後に1ヶ月分課金された。クレジットカードの締日と相談して経理系の手続きを行う場合は注意。
## 事前設定
APPを作ること。
必要な認証系の情報は、 「Apps」の個別アプリの「Keys and tokens」リンク(鍵マーク)で行けるページから作成・取得できる。
* API Key and Secret (Consumer Keysの下)
* Bearer Token(Authentication Tokensの下)
* Access Token and Secret (Authentication Tokensの下)※ User authentication settingsはデータ取得のみなら設定不要かと思われる。
## Searchの注意点(Basicプラン)
https://developer.x.com/
LinuxでPythonの仮想環境(venv)を作る方法
# 仮想環境(venv)とは
venvはPythonの仮想環境を作成する仕組みで、Pythonをインストールすると標準で利用できます。用途としては、プロジェクト別にインストールしたいパッケージを分けるときです。使っていきましょう。
# Linuxでvenvを作成してvenv使用する
“`bash:terminal
$ python3.9 -m venv (venvディレクトリ名) # 仮想環境を作成する
“`
このコマンドでvenvの環境が(venvディレクトリ名)に作成されます。“`bash:terminal
$ source (venvディレクトリ名)/bin/activate # 仮想環境に入る(有効化)する
“`
とsouceするとターミナルの先頭に括弧書きで使用している仮想環境の名前が表示されます。“`bash:terminal
$ which python # pythonのpathを表示
(venvディレクトリのPATH)/bin/python
“`
と表示されていればOKです。仮想環境を抜ける(無効化)するにはdeactivateコマン
はじめてのPytest
### テストコードをさくっと学んだので自分用のメモを残す
—
### Documents
[Pytest](“https://docs.pytest.org/en/stable/getting-started.html#get-started”)[GitHub](“https://github.com/pytest-dev/pytest/”)
—
### Installation
“`
pip install pytest
“`
—### まずは関数をテストする。
—
src >> testするファイルを格納“`
# src/code.py
def sum_numbers(a, b):
return a + b
“`
—
tests >> testcodeを格納するフォルダ
from folder_name import fileName
“`
# tests/test_1.py
from src import codedef test_1():
result = code.sum_numbers(1, 2)
めも(WIN10)
### SCOOP を使ってPython をInstallする
“`
#Power Shell
scoop install python
“`“`
python3 -V
#Python 3.12.2
“`“`
#Power Shell
mkdir Pyenv
“`“`
# python -m venv
python -m venv C:\Users\UserName\Pyenv
“`#### Script直下にActivate.ps1がある事を確認してActivate.ps1を実行する(仮想環境が有効になる)
“`
Scripts\activate.ps1
“`“`
CREATE TABLE shuzen_list (
id TEXT,
工事No TEXT,
工事内容 TEXT,
建物名 TEXT,
場所 TEXT,
受付日 TEXT,
工事完了日 TEXT,
売価予定金額 INTEGER,
売価合計 INTEGER,
Python3 エンジニア認定基礎試験 合格体験記
# 初めに
Python3 エンジニア認定基礎試験に受かりました。
前回のAWS SAAを受験してから大体10日ほどでの合格になります。
受験経緯としてはPythonを触れてみたいなと思ったときに、せっかくなら資格でも取ってみようかなと思ったのがきっかけになります。ついでに資格手当ももらえるからですね。資格手当はとても偉大です。# 試験の概要
受験料金:1万円(税別) 学割5千円(税別)
問題数:40問(すべて選択問題)
合格ライン:正答率70%
試験の詳細は下記になります。
[Python3エンジニア認定基礎試験](https://www.pythonic-exam.com/exam)# 使用教材
* ExamApp
→知識の確認に使いました。初級、中級、上級とありますが中級まででも合格自体はできるかも。記録を見たら各5回ずつくらい解いてました。
* DIVE INTO CODE
→1週間無料体験があったので使いました。無料期間でやりきった感じがあったので無料期間中に解約しました。ゴメンネ
* 公式ドキュメント
RaspberryPiを使って入退室管理システム作ってみた!
# 概要
私が所属している研究室は人が少ない!
これではきっと研究も余り進んでいないはずだ!!(偏見)
ということで、何かと便利な入退室管理システムを作ってみたら以外と面白かったのでそれについて触れていきたいと思います。# 環境
– Ubuntu 22.04 LTS
– Raspberry Pi 4 Model B
– RC-S380/S
– Python 3.10.12# 準備
1. NFC/FeliCaリーダーをUSBでRasPiに接続
1. 端末で`lsusb`を打ち込んで下記が出力されれば認識完了!“`
Bus 001 Device 003: ID 054c:06c1 Sony Corp. RC-S380/S
“`1. nfcpyをインストール
“`
$ pip install -U nfcpy
“`## 学生証を中身を見てみる
以下が学生証の中身を見るコードになります。
“`python:dump.py
import nfcdef on_connect(tag):
print(tag)
Streamlitの環境でPython3勉強の記録
StreamlitのPython3を勉強して自分用としてメモを残す
1. 環境設定
Python3 と Streamlit の環境を整える手順を説明する。
今回のOSはWindows11とする。* Python3のインストール(未インストールの場合)
・リンク:https://www.python.org/downloads/
・もしくは、Windows11の既存アプリ:Mincrosoft storeでPython3ダウンロード
* 環境変数を設定する。
・リンクからダウンロードした場合は、環境変数に設定する必要がある。
・Mincrosoft storeでダウンロードした場合は省く
* コマンドプロンプトを起動しPython3のバージョンを確認
“`
python -V
//Python 3.1x.xが出れば環境設定完了
“`
* 必要なパッケージのインストール
以下のコマンドを実行する。
“`
データ拡張
## はじめに
前回の記事で、事前学習モデルについてある程度の動きを確認することができました。これからAIに教師データを学習させて画像認識を体感してみたいと思います。モデルも事前学習モデルではなく、独自でモデルを作成してみたいと思います。
具体的にやりたいことはお酒の画像をAIに学習させて、それがどのジャンルのお酒なのかを判別するプログラムを作りたいと思っています。AIにデータ学習させるため、お酒データ(教師データ)を大量に準備する必要があるのですが、用意できたのは7つのジャンルに分類されたお酒画像が50枚ずつで学習データが全く足りません。
そこでまずはデータ拡張を行い、データを水増ししようと思います。## データ拡張方法
データ拡張方法としてはいろいろな方法があると思いますが、今回は以下の方法を使います。
* 画像の反転
![1719312498021_trans.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3750854/d51cfaea-9268-55cb-58e4-793954d9067d
A/Bテストで必要なサンプル数を見積もる方法【帰無仮説、検出力、有意水準】
## はじめに
新しい施策が効果的かどうか知りたいとする。
オンラインでのA/Bテストは最も効果的な方法の一つだ。どのような施策でテストを行うか、また得られた結果をどのように分析するかは当然大事である。
そしてつい軽視されがちであるが、実験前に**必要なサンプル数を見積もる**のも同じくらい大事だ。
サンプル数が少なすぎると本来見たい効果が見れないかもしれない。
一方で工数やコスト、リスクの観点からサンプル数をとにかく増やせばいいというものではない。ここではコンバージョンするかしないか?に絞ったよくあるケースについて、必要なサンプル数を見積もる方法について考えてみよう
# おおよその計算式
有意水準5%、検出力80%の場合、A/Bテストに必要なサンプル数nは以下の式で見積もることができる。
(有意水準、検出力の説明については後述)“`math
\begin{aligned}
n&\sim\frac{8({\sigma_T}^2 + {\sigma_C}^2)}{\delta^2}\\
&=\frac{16\sigma^2}{\delta^2}\\
\end{al
FAST API で使うコマンド
## 自分用メモ
### サーバ起動
“`
uvicorn blog.main:app –reload
“`### ライブラリ バックアップ
“`
pip freeze > requirements.txt
“`### Import sort
“`
isort .
“`### 仮想環境 有効化
“`
source Scripts/activate
“`
### 仮想環境 無効化
“`
deactivate
“`
複数のサイズのアイコンを一括で作成
“`python
from PIL import Image
import sys
import osargv = sys.argv
def remove_ext(fpath):
d = os.path.dirname(fpath)
fname = os.path.basename(fpath)
ff, ext = os.path.splitext(fname)
prefix = os.path.join(d, ff)
return prefixdef resize_image(input_path):
# 変換するサイズ
sizes = [48, 72, 96, 144, 192]prefix = remove_ext(input_path)
# 入力画像を開く
with Image.open(input_path) as img:
# 幅と高さが同じであることを確認
if img.width != img.height: