見出し画像

python:Twitterでイベントや出会いを探すプログラムを作ってみた

最近はSNSでイベントがあることを知って、参加したり、逆にイベントを呼び掛けたり、様々な出会いがあると思います。

今回はpythonのTweepyとSeleniumを使って、Twitterで指定した単語を指定した地域付近でツイートしている人を抽出するプログラムを作成しました。

Tweepyを使用するには事前にAPIの申請が必要となります。以下の記事で詳しく申請方法について、記載されているのでAPIの申請がまだの方は、先に申請してから、この記事を読んでいただければと思います。

コード結果

キャプチャ

キャプチャ

あくまでツイートを行った位置を取ってくるので大阪駅付近で何かを探す場合は単語に含ませておいたほうが安牌だと思います。

コード全体


import tweepy
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException

def geocode():
   
   """
   geocodeをseleniumを使って検索し、取得する
   
   """
   driver = webdriver.Chrome("chromedriverが保存しているパスを入力してください")
   driver.get("https://www.geocoding.jp/")
   driver.implicitly_wait(20)
   search_word = driver.find_element_by_xpath('//*[@id="q"]')
   search_word.send_keys(word)
   search_word.send_keys(Keys.ENTER)
   latitude = driver.find_element_by_xpath('/html/body/span[1]/b[1]').text
   longitude = driver.find_element_by_xpath('/html/body/span[1]/b[2]').text
   return latitude,longitude
word = input("探したい地域名を入力してください:")
query = input("検索したい単語を入力してください:")
query2 = input("さらに絞る場合は単語を入力してください:")
geocode_get = geocode()
geo = geocode_get[0] + "," + geocode_get[1] + ",50km"
print(geo)


def get_oauth():
   """
   apiの認証
   
   """
   consumer_key = "apiキーを入力してください"
   consumer_secret = "apiキーを入力してください"
   access_key = "apiキーを入力してください"
   access_secret = "apiキーを入力してください"
   auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
   auth.set_access_token(access_key, access_secret)
   return auth


def csv_get(api):
   """
   csvへ出力
   
   """
   with open('data.csv', 'w',newline='',encoding='utf-8_sig') as f:
       n = 0
       search_word = [query,query2]
       for status in api.search(q = search_word, lang='ja', geocode=geo, count=50):
           user_name = status.user.screen_name
           user_location = status.user.location
           tweet_contents = status.text
           tweet_day = status.created_at
           writer = csv.writer(f, lineterminator='\n')
           writer.writerow([n, '@' + user_name, user_location, tweet_day, tweet_contents])
           n += 1
   pass


def main():
   auth = get_oauth()
   api = tweepy.API(auth_handler=auth)
   csv_get(api)
   print("データ取得完了")


if __name__ == '__main__':
   main()


参照した記事

その他のTwitter関連記事

今回の記事意外にもTwitter関連の記事を書いています。ぜひご参照ください。有料のものはコード解説も書いています。


この記事が気に入ったらサポートをしてみませんか?