python」タグアーカイブ

python 勉強中、 文字列 改行ごとに配列にしたい

テストコード、2022/05/03

実際の使用するコードはこちら

出力結果

MacのBlender3.0で、pythonのpandas_datareaderを実行したらNo module namedというエラーが発生

環境:MacOS、Blender3.0
Macにて、Pythonスクリプトを使用してBlender3.0からPythonスクリプトを実行すると
エラー内容:
ModuleNotFoundError: No module named ‘pandas_datareader’
Error: Python script failed, check the message in the system console

やったこと
ターミナルから
pip uninstall pandas_datareader
pip install pandas_datareader
pip3 install pandas_datareader

でもだめ

結論

以前使用したのはBlender2.91から、新しく3.0にした。そうなると当然Blender3.0のPythonに置き換わってしまう。
よって2.91のときにインストールしたpandas_datareaderは消去されているので、3.0用に
またインストールする必要がある。頻繁にBlenderのPython使わないから忘れている。

やったこと

自分でメモしてた
Mac版BlenderのPythonにPip、pandas_datareaderインストールしたメモ
https://pikucha.sakura.ne.jp/blog/2020/12/27/mac%E7%89%88blender%E3%81%AEpython%E3%81%ABpip%E3%80%81pandas_datareader%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%83%A1%E3%83%A2/

MacOSのPythonとBlenderのPythonが存在する。つまりBlenderのPythonにpandas_datareaderを個別に
インストール必要がある。Pipもインストールする

以下はターミナルにて、Blenderディレクトリで実行した例である

(1)pipのインストール

ディレクトリのファイルを確認する
get-pip.pyがあるはず。なければBlenderのバージョンディレクトリ(2.9とか3.0とか)が違うか、グーグル先生に聞く。
>あった
(base) ToshironoiMac:bin toshiromaseda$ ls
get-pip.py python3.9

(2)次にget-pip.pyを実行

(3)pandas_datareaderをpipでインストール

/Applications/Blender.app/Contents/Resources/3.0/python/bin/pip install pandas_datareader

python スクレイピング、BeautifulSoupライブラリ

#株探先物オプションのスクレイピング。取得した文字列をコピペしてTEXTにして、
#CSVに出力してMysqlにインサートするコード
#URLと日付と月限は手動で毎回入力する必要がある。

#以前はファイル作成まで手動で作業していた。
#WEBページを開き
#先物オプションの出来高データを取得して
#テキストファイルにする
#所定のフォルダにコピー、移動する
#個人用クラスメソッドを使う。

いままでWebdriverライブラリを使用していたが、空白部分が自動で削除されてしまった。
削除してほしくなかったので、BeautifulSoupライブラリを使用した。こちらのほうはクロムは起動しないし純粋にhtmlの文字を空白を含めて取得してくれた。
以下は今回作ったコードの一部。class cGetOption()
なおdef returnDriver(self,lurl)はwebdriverを使用したもので実際には採用しなかった。
株探の先物オプションのURLを取得して
そのページの文字列を取得。このとき、ある文字列Aと文字列Bの間の文字を取得(findFirstStrのところ)
そしてタプルで、文字列とファイル名文字列を出力する

https://github.com/maseda1030/yahoofinance_python.git

 

 

MySqlでDB、テーブル作成メモ 備忘録

MySqlでDB、テーブル作成メモ(条件はユーザはすでに作成済)
株式市場の企業の株価と出来高を登録する。
pythonを使ったスクレイピング処理をこれから行う。この記事にはPythonの記載はない。
mysqldbを使用していたがmysql-connector-pythonが良いらしいのでpip install済

ターミナルでの作業

最近忘れっぽくて、使っていないコマンドをどんどん忘れている。SQL文も忘れてるので、備忘録メモとして記載しておく。記憶力の低下に抵抗せずに、メモをしていつでも思い出せるかメモを見ながら作業するようにする。

 

python、テキストファイル出力、配列に文字を連結するだけ

#python、トレーディングビューのリストに追加するテキストファイル出力、配列に文字を連結するだけ
#必要な情報は、リスト名(テキストファイル名)、企業コード(このコードは調べたい企業コードなので、これだけは自分で探さないといけない)

トレーディングビューでインポートtxt 作り方

「TSE:」と銘柄コードをあわせる。例 TSE:2345

複数の銘柄コードを追加するときは以下のようにカンマで追加すればよい

TSE:2345,TSE:2670

pythonスクレイピング,yahooふぁいファイナンス

#トレーディングビューのウォッチリスト(右側)のインポート(、、、のようなアイコン)で取り込める。テキスト名がリスト名になる
#複数企業の登録が楽になるのでチャートを選ぶのが楽になる。

出力例

更に複数のリストまとめて作るPythonスクリプトは

Pythonを使ってヤフーファイナンス日経平均株価の時系列を取得、スクレイピング

>追記、2022/02/19、ヤフーファイナンスのデザイン変更により、Pythonスクリプト変更。変更内容は姉妹ブログへ

Python を使ってヤフーファイナンス 日経平均株価の時系列を取得、スクレイピング
#https://stocks.finance.yahoo.co.jp/stocks/history/?code=998407.O
#日経平均株価の時系列のテーブル表から該当の文字列を取得する、日付 始値 高値 安値 終値

https://github.com/maseda1030/yahoofinance_python.git

 

出力例

 

今日のPythonエラー クラスを作ったときにtakes 0 positional arguments but 1 was given

Pythonで
クラスを作ってメソッドを作ったらエラーになった。
takes 0 positional arguments but 1 was given

https://qiita.com/matsuida55/items/4188430631353a7a1194
「pythonはクラスメソッドの引数1つ目に必ず self を取らなければならない。」

・結論
クラスのメソッドの引数は必要なくても、 引数selfを入れなくてはならない。

誤り:エラーになるtakes 0 positional arguments but 1 was given

正しい

 

Pythonを使ってヤフーファイナンス情報を取得、スクレイピング

#複数企業コード対応版 企業コードから企業名と株価を取得する
#Anaconda JupyterLabによる動作 Shift+Enterで実行になる

動作環境:MacOS 、Python、Anaconda JupyterLab

https://github.com/maseda1030/yahoofinance_python.git

面倒だった点は、複数タグが存在するタグ名tr,td,ddの扱い。複数の場合forで回して配列みたいにしてデータを取得する必要があるし、スペースが含まれるクラス名は別のプロパティ?で読み込む必要がある。

find_element_by_class_nameでスペースを含むクラス名はエラーとなるので、find_element_by_css_selectorとしてドット.で接続する。

誤り:el.find_element_by_class_name(‘stocksDtl clearFix’)

正:el.find_element_by_css_selector(“.stocksDtl.clearFix”)

以下はサンプルコード。使い方は、codelistに企業コードを入力すると、ヤフーファイナンスからスクレイピングして「コード、企業名、終値株価、前日比、日付」を半角スペース区切りで出力するだけ。ヤフーファイナンスに接続するときは、取得間隔を1,2秒程度空けている。連続で取得するとサーバ負荷が増えるから強制切断とかアクセスをブロックされてしまうかもしれない。

>>コード修正、Spanタグが存在しない時間帯があるみたいなので、存在するかどうかのチェックを追記した。2021年2月8日、12時06分

 

更に修正した。メソッドをクラスにした。また始値、高値、安値を入れた。2021/02/12

 

pythonでCSVを読み込みクラスオブジェクトを配列に入れる

CSVを読み込みクラスオブジェクトを配列に入れる

CSV例,6列必要。1行目は除外する。米ヤフーファイナンスから日経平均株価データを取得すると、今日の分は取得できるのに、なぜか前日のデータが時間帯によって取得できない。そのため、取得できたデータと取得できないデータをCSVにしておいて使用する。

日付,高値,安値,始値,終値,調整終値

となっている。

クラスから実際のデータを取得するときは

df[0].indexとかdf[0].closeみたいにして取得する。つまり1行分が1オブジェクトの配列として登録されている。