Pythonでインスタグラムの投稿数/フォロワー数/フォロー数を記録する

instaloaderを利用した。


Pythonスクリプト

  1. import datetime
  2. import instaloader
  3.  
  4.  
  5. # parameters
  6. username = input('username: ')
  7. logfile = 'logfile.log'
  8.  
  9. # load profile data
  10. loader = instaloader.Instaloader()
  11. profile = instaloader.Profile.from_username(loader.context, username)
  12. posts = profile.mediacount
  13. followers = profile.followers
  14. following = profile.followees
  15.  
  16. # print results
  17. print("Username : {}".format(username))
  18. print("Posts : {}".format(posts))
  19. print("Followers : {}".format(followers))
  20. print("Following : {}".format(following))
  21.  
  22. # write results in logfile
  23. today = datetime.date.today()
  24. with open(logfile, 'a') as f:
  25. print(today.isoformat(),
  26. username, posts, followers, following, sep=',', file=f)
  27.  


実行結果サンプル(標準出力)

Username  : (ユーザネーム)
Posts     : 7345
Followers : 609797472
Following : 41


実行結果サンプル(ファイル出力)

2023-02-27,(ユーザネーム),7345,609797472,41


pandasとmatplotlibを使ってグラフ表示してみた。

Pythonスクリプト

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. from matplotlib import dates as mdates
  4. from datetime import datetime as dt
  5.  
  6. # parameters
  7. data_file = 'logfile.log'
  8. username = input('username: ')
  9. # data frame
  10. df = pd.read_csv(data_file).query('user == @username')
  11. print(df.tail())
  12. # convert x to time
  13. xlist = []
  14. xlist = [dt.strptime(d, '%Y-%m-%d') for d in df[df.columns[0]]]
  15. # plot data
  16. plt.close()
  17. fig, ax = plt.subplots()
  18. ax.plot(xlist, df[df.columns[3]], marker='o')
  19. # set labels
  20. ax.set_ylabel("followers")
  21. labels = ax.get_xticklabels()
  22. plt.setp(labels, rotation=45)
  23. # set x-scale and format
  24. ax.xaxis.set_major_locator(mdates.AutoDateLocator())
  25. ax.xaxis.set_major_formatter(mdates.AutoDateFormatter("%Y-%m-%d"))
  26. ''' set x range if you need
  27. start_time = dt.strptime('2023-2-1', '%Y-%m-%d')
  28. end_time = dt.strptime('2023-3-31', '%Y-%m-%d')
  29. ax.set_xlim([start_time, end_time])
  30. '''
  31. # show
  32. plt.show()


実行結果

username: (user1)
          date     user  posts  followers  following
21  2023-02-15  (user1)    489        268         19
22  2023-02-16  (user1)    489        279         19
23  2023-02-20  (user1)    489        280         19
26  2023-02-23  (user1)    489        290         19
28  2023-02-28  (user1)    489        291         19





使用したサンプルデータ(logfile.log)

date,user,posts,followers,following
2023-02-01,(user1),489,270,19
2023-02-02,(user2),489,271,19
2023-02-05,(user1),489,275,19
2023-02-10,(user1),489,270,19
2023-02-11,(user2),489,271,19
2023-02-15,(user1),489,268,19
2023-02-16,(user1),489,279,19
2023-02-20,(user1),489,280,19
2023-02-21,(user3),489,288,19
2023-02-22,(user2),489,286,19
2023-02-23,(user1),489,290,19
2023-02-24,(user3),489,290,19
2023-02-28,(user1),489,291,19

Comments

Popular Posts