今回は、取得するサイトを増やすことにしました。
会社の確定拠出年金のサイトは、うまく取得できませんでしたが、フレームを使っていることが分かり、そのフレームに移動して取得したら、できました。
SBI証券でつまづきました。
Tableでレイアウトしてあり、楽勝だと思ったのですが、まずは必要なデータがある場所を特定するのに時間がかかりました。
よくxpathで位置を特定するのですが、今回のtableにidやname、classなどは設定されておらず、beautifulsoupだとxpath指定はできないみたいなので(多少テクがいるみたい)、htmlをよく解析することに・・・。
次に引っかかったのは、tdの中で<BR>で改行してあり、「取得額<BR>現在額」になっています。
pd.read_htmlで読むと、<BR>がとれて、文字列で、取得額現在額、と文字列的に連結されています。
いったん文字列をスライスして、数値に変換したのですが、「SettingWithCopyWarning」エラーが出ます。
プログラムが止まることはなく、正常にデータは取得できているようなのですが、エラーが気持ち悪いので、直そうとしました。
2時間粘ってもだめだったので、もうこのまま行きます。
エラーは出ますが、動くプログラムができました。
記録したいエクセルの改善や、プログラムの他の調整もほぼ終わってきて、最終段階です。
現在、12サービスから取得して、自動取得部分で合計約53秒、エクセルへの転記がプラス5分くらいで終わります。
並行処理をせず直列処理した場合、自動取得部分で合計約272秒かかります。
従来の手法だと、15分オーバーだったので、10分くらい時短の状態です。
次やりたいこと
- ID/パスワードのセキュリティ