隅歩つ

書いて理解を深める

SeleniumでWebサイトにアクセス

データ収集やリサーチをしたいと思っています。

最初の第一歩として、スクレイピングをやってみました。

Seleniumを使ってWebサイトにアクセスするまでを調べて実践してみました。

SeleniumでWebサイトにアクセスするまで

SeleniumでWebサイトにアクセスするまでの手順です。

今回の作業は、仮想環境で行いました。

yuuuha.hatenablog.com

Seleniumをインストール

まずは、Seleniumをインストールします。

pip install selenium

ChromeDriverのダウンロード

次に、ChomeDriverをダウンロードします。

chromedriver.chromium.org

ダウンロードするバージョンは、現在使っているChromeに合わせます。

ダウンロードしたexeファイルを作業するフォルダに入れる。
または、Pathを通します。

Seleniumをインポート

そして、WebDriverをインポートします。

from selenium import webdriver

CromeDriverを読み込む

変数browserにWebDriverを読み込みます。

browser=webdriver.Chrome()

Webページにアクセスする

Googleにアクセスします。

url='https://www.google.com/'
browser.get(url)

ブラウザが立ち上がり、Googleにアクセスできました。

ブラウザを閉じる

最後に、ブラウザを閉じます。

browser.quit()

参考

こちらのYoutube動画を参考にさせていただきました。


www.youtube.com

spotipyでSpotifyプレイリストのデータを取る

Spotifyのプレイリストを分析して、自分の好きな音楽を知れないかな、と思っています。

Spotifyで分析するためには、データが必要です。

spotipyというライブラリを利用して、データを取ります。

以下の記事を参考にさせていただきました。

knowledge.insight-lab.co.jp

spotipyライブラリを使う手順

ざっくり手順を確認します。

  1. spotipyをインポート
  2. 認証をインポート
  3. idとsecretを変数に入れる
  4. spotipyを読み込む
  5. ユーザー名とプレイリストIDを設定する
  6. プレイリストデータを取得する

詳細

spotipyをインストールします。

pip install spotipy

まず、spotipyと認証ライブラリ(?)をインポートします。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

そして、idを設定します。
idはSpotifyDashboardで取得します。

developer.spotify.com

取得したIDとSECRETを設定します。
IDとSECRETは32桁くらいの文字列です。

client_id='ここに取得したIDを入れる'
client_secret='ここに取得したSECRETを入れる'

IDとSECRETを認証(?)したものを変数に入れます。

client_id_secret = SpotifyClientCredentials(client_id, client_secret)

次に、spotipyを読み込んで、変数spに入れます。

sp = spotipy.Spotify(client_credentials_manager=client_id_secret)

次に、ユーザー名と取得したいプレイリストを設定します。

user = 'Spotifyのユーザー名を入れてください'
playlist_id = '59aGQ5CfHNPhLe0OzbvBDD'

最後に、プレイリストデータを取得します。

playlist_data = sp.user_playlist(user, playlist_id)

確認します。

{'collaborative': False,
 'description': '2022年11週目のプレイリスト',
 'external_urls': {'spotify': 'https://open.spotify.com/playlist/7qKwh074Msa1UMgsvsZeF1'},
 'followers': {'href': None, 'total': 0},
 'href': 'https://api.spotify.com/v1/playlists/7qKwh074Msa1UMgsvsZeF1?additional_types=track',
 'id': '7qKwh074Msa1UMgsvsZeF1',
 'images': [{'height': 640,
   'url': 'https://mosaic.scdn.co/640/ab67616d0000b27365134bf14c71182753b148acab67616d0000b27395d8c3f4c8b1eba5ad67c910ab67616d0000b273b52af5dbb146e83899a351a4ab67616d0000b273e9f07089161121bb12051264',
   'width': 640},
  {'height': 300,
   'url': 'https://mosaic.scdn.co/300/ab67616d0000b27365134bf14c71182753b148acab67616d0000b27395d8c3f4c8b1eba5ad67c910ab67616d0000b273b52af5dbb146e83899a351a4ab67616d0000b273e9f07089161121bb12051264',
   'width': 300},
  {'height': 60,
   'url': 'https://mosaic.scdn.co/60/ab67616d0000b27365134bf14c71182753b148acab67616d0000b27395d8c3f4c8b1eba5ad67c910ab67616d0000b273b52af5dbb146e83899a351a4ab67616d0000b273e9f07089161121bb12051264',
   'width': 60}],
 'name': '11weeks2022',
 'owner': {'display_name': 'yusakuhamajima',
  'external_urls': {'spotify': 'https://open.spotify.com/user/yusakuhamajima'},
  'href': 'https://api.spotify.com/v1/users/yusakuhamajima',
  'id': 'yusakuhamajima',
  'type': 'user',
  'uri': 'spotify:user:yusakuhamajima'},
 'primary_color': None,
 'public': True,
 'snapshot_id': 'NDEsNjc4MWI1ODEyNTJlOWNkODkxOTJmY2Y3ZjBjOGI0ZmQ1YTUwYjAxNg==',
...
  'offset': 0,
  'previous': None,
  'total': 5},
 'type': 'playlist',
 'uri': 'spotify:playlist:7qKwh074Msa1UMgsvsZeF1'}

無事にプレイリストデータを取得できました。

yuuuha.hatenablog.com

BlenderのPython APIでprimitive設定

Blender の Scripting を使いこなしたい。

けど、普通の Blender も使いこなせているわけではないので手こずってます。

まずは、Mesh についてまとめてみたいと思います。

以下の公式ページで確認しました。

docs.blender.org

primitive

Mesh の基本的なものは、primitive というようです。

primitive を表示する最小のコードはこちら。

import bpy

for m in bpy.data.meshes:
    bpy.data.meshes.remove(m)

bpy.ops.mesh.primitive_uv_sphere_add()

これで、uv_sphere が表示できます。

for 文は、すべてのメッシュを削除するものです。

Blender 上であらかじめ削除していれば、この for 文はなくても大丈夫です。

位置と大きさ

位置と大きさを指定するには、location と scale を設定します。

bpy.ops.mesh.primitive_uv_sphere_add(location=(3, 0, 0), scale=(0.5, 0.5, 0.5))

location と scale 以外にもいろいろ設定できますが、今はあまりピンとこなかったので、とりあえず 2 つだけです。

circle
bpy.ops.mesh.primitive_circle_add()

cone
bpy.ops.mesh.primitive_cone_add()

cube
bpy.ops.mesh.primitive_cube_add()

cylinder
bpy.ops.mesh.primitive_cylinder_add()

grid
bpy.ops.mesh.primitive_grid_add()

ico_sphere
bpy.ops.mesh.primitive_ico_sphere_add()

monkey
bpy.ops.mesh.primitive_monkey_add()

plane
bpy.ops.mesh.primitive_plane_add()

torus
bpy.ops.mesh.primitive_torus_add()

uv_sphere
bpy.ops.mesh.primitive_uv_sphere_add()

↓この本で勉強中

BlenderユーザーのためのPython入門

BlenderユーザーのためのPython入門

  • 作者:大西武
  • シーアンドアール研究所
Amazon

https://yuuuha.hatenablog.com/entry/bpy_materialyuuuha.hatenablog.com

Flaskの「Hello World」

Pythonを勉強したら、アプリを作ってみたいと思ってます。

Flaskに挑戦してみます。

今回は、FlaskでHTMLを表示するまでをやってみました。

手順

  1. venvで仮想環境を作成
  2. appファイル作成
  3. PowerShellで起動
  4. デバッグモード設定
  5. templatesフォルダ作成
  6. render_templateをインポート

venvで仮想環境を作成

必須ではないようなのですが、今回は仮想環境でやりました。

yuuuha.hatenablog.com

Flaskをインストール

まずは、Flaskをインストールします。

pip install flask

appファイル作成

appファイルを作成します。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

以下のサイトのQuickstartにあるものを使いました。

flask.palletsprojects.com

PowerShellで起動

appファイルを起動します。

起動はPowerShellで行いました。

$env:FLASK_APP="helloworld”
flask run

起動・表示できました。

デバッグモード設定

開発時にコードを更新するごとにappを起動するのは面倒です。

更新ごとにブラウザのリロードで更新を確認できるようにしたいです。

$env:FLASK_ENV = "development”
flask run

こちらを実行するとデバッグモードを使えます。

HTMLを作成

次は、HTMLを表示します。

まず、templatesフォルダを作成します。

templatesフォルダの中にHTMLを書きます。

<html lang="en">
    <head>
       <meta charset="UTF-8" />
       <meta http-equiv="X-UA-Compatible" content="IE=edge" />
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
       <title>Document</title>
   </head>
    <body>
        <h1>Hello World</h1>
        <p>hello world</p>
    </body>
</html>

ファイル名は、helloworld.htmlです。

HTMLを表示

次に、render_templateをインポートします。

from flask import render_template

appファイルを以下のように書き換えます。

@app.route("/")
def helloworld():
    return render_template('helloworld.html')

表示できました。

これで完了です。

Pythonで仮想環境をつくる

Pythonの勉強をしていると、「仮想環境」という言葉とよく出会います。
「仮想環境」は上級者だけがするものだと思っていましたが、そうでもないようです。
必須のようなので、私も仮想環境をやってみました。 www.python.jp

仮想環境をつくる手順

流れはこんな感じです。
1. 作業用のディレクトリを作成
2. 作成
3. 実行
4. コピー
5. 終了

作業用のディレクトリを作成

まず、仮想環境にするディレクトリを作成します。

mkdir venv_sample

今回は、「venv_sample」にしました。

仮想環境を作成

そして、「venv_sample」に仮想環境を作成します。
以下を「venv_sample」の中で実行します。

python -m venv .venv

仮想環境を実行

そして、仮想環境を実行します。
「venv_sample」の中で以下を実行します。

PowerShellの場合

.venv\Scripts\activate.ps1

コマンドプロンプトの場合

.venv\Scripts\activate.bat

実行されるとPowerShellの行の最初に(.venv) が付いていると成功です。

仮想環境のコピー

複数で開発する時は、他のメンバーと環境を同じにしなければなりません。
仮想環境の状態を他の人に共有するときのために書き出すことができるようです。
以下を実行すると一覧にすることができます。

python -m pip freeze > requirements.txt

これで「requirements.txt」というファイルができます。
requestsだけをインストールした状態では以下のようになります。

certifi==2021.10.8
charset-normalizer==2.0.12
idna==3.3
requests==2.27.1
urllib3==1.26.9

これを他の環境で実行する場合は以下を実行します。

python -m pip install -r requirements.txt

便利な機能ですね。私もこれを使えるくらいになりたい。

仮想環境の終了

仮想環境の終了は以下です。

deactivate

これを実行するとターミナルの(.venv) がなくなります。

Mac

Macもほぼ同じです。 仮想環境を作る時は以下となります。

python3 -m venv .venv

最初はpython3になります。 起動は以下となります。

. .venv/bin/activate

最初に「. 」を付けます。 終わる時は以下です。

deactivate