Search 4 Truth

Search 4 Truth

Pythonと仮想通貨

【Python】ビットコインの価格を定期的にツイートするbotを作った【Application Managementの使い方も記載】

今回は、Pythonを使ったビットコインの価格を取得して自動で定期ツイートしてれるbotを作成しました。

構造としては

1,BeautifulSoupで価格データのスクレイピング 

2,Tweepyを使ってツイート

3,crontabを使ってbot化

となっています。 

スクレイピングの対象となるbitFlyerのサイトのHTMLをBeautifulSoupで抜き出し、正規表現で文字列を抽出してTweepyを使ってツイートする簡単なものです。Raspberry Piを使ってcrontabでbot化しましたが、今回はツイートするところまでを紹介していきます。

完成品はこちらです。10分毎にツイートするbotとなっています。

bitFlyerの専用のAPIがありますが、今回は公式サイトのスクレイピング結果をツイートするbotとなっています。

f:id:lisbeths:20171227011828p:plain

今回のプログラミングで使用した端末

・MacBook Air Early 2015 Sierra 10.12.6 Python 3.6.2

使用したモジュール

・re
・urllib
・tweepy
・datetime
・BeautifulSoup

 tweepyとbeautifulsoupは新しくインストールする必要があるので、pipでインストールします。 

pip3 install beautifulsoup4
pip3 install tweepy

各種キーの取得

tweepyを使うためにOAuth認証を行ないます。

こちらに移動し、ご自身のTwitterアカウンでログインします。注意点として、予め電話番号とアカウントととの紐付けが必要です。

1,「Create New App」を選択。 

f:id:lisbeths:20180128140130p:plain

 2, 「Application Details」の"Name" 、"Description" 、"Website" をそれぞれ入力。完了したら「Create your Twitter application」を選択。

f:id:lisbeths:20180128140254p:plain

 3, 無事作成できたらこの画面になる。「Keys and Access Tokens」を選択。

f:id:lisbeths:20180128140513p:plain

 4, 「Create my Access token」を選択。

f:id:lisbeths:20180128140813p:plain

 5, "Consumer Kye"、"Consumer Secret"、"Access Token"、"Access Token Secret" をそれぞれメモっておく。

f:id:lisbeths:20180128140935p:plain

コード 

以下のソースコードをそのままコピペして拡張子.pyで保存して下さい。先程メモした、キーを"consumer_key"、"consumer_secret"、"access_key"、"access_secret"にそれぞれ代入して下さい。 

import re
import urllib
import tweepy
import datetime
from bs4 import BeautifulSoup as b4

todaydetail = datetime.datetime.today()
today = todaydetail.strftime("%m/%d %H:%M")

def Tweet(text):
    consumer_key = 'consumer_key'
    consumer_secret = 'consumer_secret'
    access_key = 'access_key'
    access_secret = 'access_secret'
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)
    api.update_status(text)

def BTC():
    url = 'https://bitflyer.jp/' 
    headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"} #UserAgentを変更します。
    req = urllib.request.Request(url,None,headers)
    res = urllib.request.urlopen(req)
    soup = b4(res,"html.parser")
    soup = str(soup)
    pa = 'none;">(.+)</div>' 
    ma = re.findall(pa,soup) 
    x = today + ' 現在のビットコインの価格\nBTC/JPY ' + 'ask: '  + ma[0] + ' / ' + 'bid: ' + ma[1] 
    return x

if __name__ == '__main__':
    Tweet(BTC()

#BTC()の戻り値を代入してツイートします。crontabで時間指定してbot化しました。

bitFlyerをスクレイピングしてビットコインの価格をツイートするやつ

 〆

以上のプログラムをcrotnabで実行すると完成品のようになります。関数BTCをご自身の好きなものに変えれば、立派なTwitterbotの完成です。

Twitterのbotについては自動化ルールをしっかりとお読みになった上でお使い下さい。このプログラム自体はルールに準じていますが、違反が確認されると、アカウントのロック、又は凍結される場合があります。