2017年10月17日

VALUの別の情報もつぶやいてみる(Python+MySQL+Tweepy)

下記のエントリでVALUの時価総額ランキングを呟くようにしました。
下記のエントリーでVALUの情報をスクレイピングしてMySQLに格納しました。...
今回は、時価総額だけでなく追加の情報もつぶやくようにしました。その内容についてのエントリーです。

追加のつぶやき

今回は、騰落率と新規公募時の時価総額のランキングをつぶやくようにしました。
下記をつぶやくまでに、幾つか注意した点を明記しておきます。

追加でスクレイピングした情報

今まではVALUのページの左側の情報のみを入手していましたが、今回は右側の情報も取得しました。

20171016_valu_0.png

また、今回は、右のように前日終値がついていないものは新規公募扱いとしてフラグを立てています。

20171016_valu_1.png

該当箇所のコードは下記となります。
    # em tagで順番に 現在値:時価総数:発行VA数:VALUER数となる
current_value = float(re.sub(",","",soup.select(".news_valu_left em")[0].string))
ag_market_value = float(re.sub(",","",soup.select(".news_valu_left em")[1].string))
value_issue = float(re.sub(",","",soup.select(".news_valu_left em")[2].string))
numerical_value = float(re.sub(",","",soup.select(".news_valu_left em")[3].string))

if soup.select(".news_valu_right em")[0].string == "---":
# 新規メンバーの場合
last_close_value = float(0)
last_first_value = float(re.sub(",","",soup.select(".news_valu_right em")[1].string))
last_top_value = float(0)
trunover = float(re.sub(",","",soup.select(".news_valu_right em")[3].string))
yearly_high = float(0)
yearly_low = float(0)
diff_rate = 0
newid = 1
else :
last_close_value = float(re.sub(",","",soup.select(".news_valu_right em")[0].string))
last_first_value = float(re.sub(",","",soup.select(".news_valu_right em")[1].string))
last_top_value = float(re.sub(",","",soup.select(".news_valu_right em")[2].string))
trunover = float(re.sub(",","",soup.select(".news_valu_right em")[3].string))
yearly_high = float(re.sub(",","",soup.select(".news_valu_right em")[4].string))
yearly_low = float(re.sub(",","",soup.select(".news_valu_right em")[5].string))
diff_rate = 100 * (current_value - last_close_value) / last_close_value
newid = 0

連投制限

Twitterでは全く同じ発言をつぶやこうとするとErrorが発生します(20回に1回ぐらいなら良いのかもしれませんが)。そのため前日と全く同じデータ・ランキングの場合にはTweetすることが出来ません。そのため、ランダムな数字を文末に挿入することにしました。該当箇所のコードは下記となります。
    for row in cur.fetchall():
tweet = tweet_prev + str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[index])+str(unit)+"\n"
#140文字以上になる場合は、140文字以内になるように分割してリストに追加
if len(tweet) > 130:
tweet_list.append(tweet_prev+"\n"+str(random.randint(1,100)))
tweet_prev = str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[index])+str(unit)+"\n"
tweet = ""
else:
tweet_prev = tweet
では、これらのことに注意して修正した全コードに続きます。
続きを読む
posted by くまなべ at 21:00 | Comment(0) | TrackBack(0) | Python

2017年10月13日

今月のAUの3太郎の日はDAISOですね

今月のAUの3太郎の日はDAISOですね。3日はすっかり忘れていましたが。STAR会員だと1個だけなので、DAISOに寄る用事があれば、ついでに……といった感じでしょうか?


20171011_3taro.png
posted by くまなべ at 04:20 | Comment(0) | TrackBack(0) | キャンペーン

2017年10月12日

大和市立図書館(シリウス)がスゴイのでお薦めしてみる

大和駅近くにある大和市立図書館(シリウス)に行ってきました。

神奈川県の図書館というと海老名の図書館が色々な意味で有名ですが、大和市立図書館は良い意味でスゴイので紹介します。

蔵書がスゴイ

図書館なので蔵書が一番重要だと思いますが、一般書・技術書共に新しい本がそろっています。

例えば図書館の蔵書をWebから調べると、2017年を含む比較的新しい本が見つかります。特に技術書の揃い方は一般の市立図書館には無いレベルだと思います。例えとしてPythonや投資関連を見てみると下記の様な感じです。

書名検索:Python
ここ最近の有名な「退屈なことはPythonにやらせよう」や機械学習関連の蔵書が複数所蔵されています。
20171011_yamatoL_0.png

著者検索:山崎元
投資関連の一例は「山崎元」さんの名前で著者検索してみましたが、確定拠出年金や投資関連の最近の本が所蔵されています。
20171011_yamatoL_1.png

また、蔵書検索システムからは分かりずらいですが、雑誌も技術書・趣味・経済と本屋で見かける雑誌は一通りカバーされています。

施設がスゴイ 

図書館はもちろん本を読む場でもあります。ゆったりと座って読むためのスペースが、普通の図書館と比較しても数多くあります。大和図書館のページから画像をリンクしていますが、下記の様な、とてもおしゃれなスペースとなっています。


また、これらのスペース以外に有料の電源コンセントつきの勉強スペースが存在しています。2時間100円で飲食可能な勉強机やソファーが配置してあるスペースとなります。

あと、1階にはスターバックスがありますが、スターバックスに負けないぐらいにオシャレな施設になっています。

子供連れにやさしくてスゴイ

3階は子供用のフロアとなっています。本棚は子供に合わせてカラフルで高さが低い物となっており、本が探しやすくなっています。


さらに子供が遊ぶためのスペースが2つ併設されています。
1つは2歳までの子供が遊ぶデパートの中の休憩所の様な無料のスペース、もう1つはボーネルランドが提供している有料の遊び場となります。

有料の遊び場は3歳〜小学2年生までが2時間制で遊ぶことが出来ます。料金は下記の通りで、一般的な有料遊び場よりも格安で提供されています。
こども

2時間につき

市内利用者200円
市外利用社300円
おとな

1日につき

市内利用者300円
市外資料者400円


そのほかにも

1階と4階にロボットのペッパーがいたり、本の貸し出しが無線タグによるセルフの貸し出しになっていたりと、子供と一緒に行っても十分楽しめる施設となっています。

近くにこんな施設があったらいいのになーと思いながら行ってきました。

posted by くまなべ at 08:00 | Comment(0) | TrackBack(0) | 日記

2017年10月10日

VALUの時価総額ランキングを定期的につぶやいてみる(Python+MySQL+Tweepy)

下記のエントリーでVALUの情報をスクレイピングしてMySQLに格納しました。
下記のエントリーで、とりあえずMySQLに触ってみましたが、実用的なことを実施し...
そのDBを元に時価総額を降順に検索して下記の様にアカウント「@kumakuma_ap」でつぶやくコードを作成しました。またつぶやくタイミングはcronで設定しています。

Tweetを140文字以内にするために

今回のコードは下記の部分でTwitterの制限である140文字になるように分割しています。
    # 時価総額10位以内を順に取得
for row in cur.fetchall():
tweet = tweet_prev + str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
#140文字以上になる場合は、140文字以内になるように分割してリストに追加
if len(tweet) > 140:
tweet_list.append(tweet_prev)
tweet_prev = str(rank)+"位:"+row[1]+"("+row[0]+"):"+str(row[5])+"BTC\n"
tweet = ""
else:
tweet_prev = tweet

rank=rank+1
# 残ったTweetをリストに追加
tweet_list.append(tweet_prev)
では、今回のコードに続きます。

続きを読む
posted by くまなべ at 08:00 | Comment(0) | TrackBack(0) | Python

2017年10月09日

レンタルサーバー(XREA)でcron設定をしてみた

下記のエントリーでVALUのデータを取得してMySQLのDBに格納するPythonのスクリプトを作成しました。
下記のエントリーで、とりあえずMySQLに触ってみましたが、実用的なことを実施し...
次に定期的にVALUのデータを取得するためにCronの設定を実施しました。

cron設定方法

1.実行用のスクリプト(001_valuCron.sh)を下記の様に作成
cd /virtual/kumanabe/public_html/cgi/ValuCheckFlaskS/
./valuCron.py
2.パーミッションを755に設定(最初は705設定となっていて動作しなかった)
chmod 755 /virtual/kumanabe/public_html/ -R
 
3.コントロールパネルのcronジョブを選択
20171005_cron_0.png

4.cronジョブの新規作成からスクリプト名や実行時間の設定を実施(今回は夜中の1時に設定)

20171005_cron_1.png

一応、これで設定は完了です。

ちなみにSSHでLOGINしたあとにcronetabで状況の確認も可能ですね
> crontab -l
0 1 * * * /bin/sh /virtual/kumanabe/001_valuCron.sh

posted by くまなべ at 20:00 | Comment(0) | TrackBack(0) | Python