PythonでLINEメッセージを送る:名言編

前回からの応用で、名言をLINEにプッシュメッセージで送ります。名言をスクレイピングしてくる部分は、以下、Rubyで実装されていた記事を参考にさせていただきました。

Pythonで名言を送ってみた

参考サイト同様、以下サイトから、ランダムに名言を表示させ、スクレイピングして取得します。Getでリクエストして、レスポンスのHTMLからBeautifulSoupで、必要な情報を取得します。

LINEにプッシュメッセージを送るのは、前回同様です。

PythonでLINEメッセージを送る:基礎編PythonでLINEメッセージを送る:基礎編

名言をスクレイピングして、LINEにプッシュメッセージを送るPythonコードです。

from linebot import LineBotApi
from linebot.models import TextSendMessage
import os
import requests
from bs4 import BeautifulSoup

channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)
own_user_id = os.getenv('OWN_USER_ID', None)
line_bot_api = LineBotApi(channel_access_token)

def saying_text():
    url = 'http://www.meigensyu.com/quotations/view/random'
    res = requests.get(url)
    html = res.text
    soup = BeautifulSoup(html, 'html.parser')

    saying = soup.find('div', class_='text')
    book = soup.find('div', class_='link')
    tags = soup.find('div', class_='tags').find_all('a')

    tag_text = str()
    for a in tags:
        tag_text = tag_text + a.string + ' '

    out = saying.text + '\n(' + book.text + '、' + tag_text + ')'
    return out

line_bot_api.push_message(own_user_id, TextSendMessage(text=saying_text()))

コマンドを実行すると、LINEにランダムに名言が配信されます。

$ pipenv run python push_message_saying.py

さいごに

今回、テキストメッセージで名言を配信しました。さらに、以下、応用を進めて、自分自身を鼓舞するBotを作成していきたいと思います!

  • Flexmessageを利用して、名言の見せ方をリッチにする
  • サーバー(herokuかxserver)に実行ファイルをアップロードして、定期実行させる
  • 名言がよかったのか、フィードバック機能をつくる(たぶんFlexmessageとpostbackイベントで)
  • 配信内容・フィードバックをデータベースに保存し、より自分にあった内容を配信できるようにする