今回はPythonとtweepyで勉強会情報をツイートするBotをつくりました。
作ったBOTはこれです。
よかったらフォローしてあげてください。
こんにちは。
日曜プログラマのかえるリーマンです。僕は新着の勉強会情報をツイートするBOTです。
良かったらフォローしてください。ツイートが多い、こんな機能がほしい、この勉強会情報を拡散してほしい
などの要望はリプがDMまで。#エンジニア勉強会#駆け出しエンジニアとつながりたい—
かえるリーマン@エンジニア勉強会BOT (@frog_program) 2019年1月13日
勉強会の情報を検索するのがめんどくさかったところから作ろうと思い立ちました。
機能としては、勉強会情報を公開している3つのサイトから、新着情報をスクレイピングしてきてTwitterに投稿するだけのシンプルなBOTです。
ざっくり作り方やコードを紹介しておこうと思います。
大体は下の記事で前にやったことと同じなので、特別新しいことはやってないです。
なので今回はほんとにコード貼り付けるだけのメモ記事ですね。
ああ、ちなみに貼ってあるコードは基幹部のみなのでこのままでは動きません。
ご容赦をお願いします。
・Twitter
Twitterで自動ふぁぼ、認証機能を実装してWEBアプリ化!
Twitterで自動ふぁぼ!PythonでTwitterBOTをつくる。
・スクレイピング
Python初心者が、BeautifulSoupではてぶ人気記事をWEBスクレイピング
BeautifulSoup×Pythonで、初心者でも10分でできるRSSスクレイピングを解説
ソースコード
#getlink.py from urllib.request import urlopen from bs4 import BeautifulSoup import json def getDoorkeeper(): getlists = [] html = urlopen("https://www.doorkeeper.jp/events/recently_published") bsObj = BeautifulSoup(html, "html.parser") bsObjs = bsObj.findAll("div", {"class": "global-event-list-day"}) for bsObj in bsObjs: month = bsObj.find("div", {"class": "month"}).text day = bsObj.find("div", {"class": "day"}).text link = bsObj.find("div", {"class": "events-list-item-title"}).find("a") url = link.get("href") title = link.text date = {"month": month, "day": day, "url": url, "title": title} getlists.append(date) return getlists def getTechplay(): getlists = [] html = urlopen("https://techplay.jp/event/search?sort=created_desc&api_dots=1") bsObj = BeautifulSoup(html, "html.parser") bsObjs = bsObj.findAll("div", {"class": "eventlist"}) for bsObj in bsObjs: day = bsObj.find("div", {"class": "day"}).text link = bsObj.find("div", {"class": "title"}) url = link.find("a").get("href") title = link.find("span").text date = {"day": day, "url": url, "title": title} getlists.append(date) return getlists def getConnpass(): getlists = [] html = urlopen("https://connpass.com/explore/") bsObj = BeautifulSoup(html, "html.parser") bsObjs = bsObj.findAll("div", {"class": "recent_event_list_inner"}) for bsObj in bsObjs: link = bsObj.find("a") url = link.get("href") title = link.get("title") date = {"url": url, "title": title} getlists.append(date) return getlists def return_Connpass_text(): g = getConnpass() texts = [] for i in range(10): title = g[i]['title'] url = g[i]['url'] text = title + "\n" + url +"\n\n" + "#エンジニア勉強会" texts.append(text) return texts def return_Doorkeeper_text(): g = getDoorkeeper() texts = [] for i in range(10): month = g[i]['month'] day = g[i]['day'] title = g[i]['title'] url = g[i]['url'] text = month + day + "\n" + title + "\n" + url + "\n\n" + "#エンジニア勉強会" texts.append(text) return texts def return_Techplay_text(): g = getTechplay() texts = [] for i in range(10): day = g[i]['day'] title = g[i]['title'] url = g[i]['url'] text = day + "\n" + title + "\n" + url + "\n\n" + "#エンジニア勉強会" texts.append(text) return texts
#twitter.py import tweepy def twitter_post(text,AT,AS): CK = # Consumer Key CS = # Consumer Secret auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) api.update_status(text) return "ok"