Python プログラミング

Instagramの自動いいねツールをDjango+Seleniumで作った話

投稿日:

PythonのフレームワークDjangoにはまっています。

 

勉強がてら何か作ろうと思い、一時期流行ったInstagramのいいねツールを作りました。

その備忘録として作り方をまとめておこうと思います。

 

また、本記事では環境にPipenvを使用しておりますが、その他の開発環境の方はPipに置き換えて読んでいただければと思います。

 

作ったもの

とりあえず最初に作ったものを貼ります。

 

Instagramのユーザー名、パスワード

いいねしたいハッシュタグとその数を入れて、「いいねを実行する」を押すと自動でいいねを開始します。

 

Djangoプロジェクト作成

プロジェクトフォルダを作成し、Djangoのプロジェクトとアプリケーションを1つ作成します。

 

 

初期設定

setting.pyを少しいじって初期設定をします。ついでに最初のmigrateと必要なパッケージのインストールも行います。

 

settings.py

 

初回のmigrateと必要なパッケージをインストール

 

パッケージについてはSeleniumを使用するためのものです。ドライバーのバージョンを指定してるのですがここのバージョンはお使いのGoogleChromeのバージョンによります。

詳しくは、スクレイピング時に「This version of ChromeDriver only supports Chrome version ...」のエラーが出た時にまとめていますので、参考にしてみてください。

 

 

これで準備はOKです。ここからアプリケーション作成に入ります。

 

アプリケーション作成

以下の流れで作成していきます。

 

  • ルーティング設定
  • 入力フォーム作成
  • Template作成
  • いいね用のクラス作成
  • View作成

 

ルーティング設定

まずはルーティングの設定を行います。app/urls.pyを以下の内容で新規作成。

 

app/urls.py

 

各Viewクラスは後ほど作成します。

 

次にプロジェクトのルートのcore/urls.pyを編集します。

 

core/urls.py

 

これで、以下のエンドポイントでアクセスが可能になりました。

/app/indexviews.IndexViewが呼ばれる
/app/setupviews.SetupViewが呼ばれる
/app/resultviews.ResultViewが呼ばれる

 

入力フォーム作成

次に必要な情報を入力してもらうためにフォームを作成します。

このフォームを、上記のIndexViewとSetupView内にて使用します。以下の内容で、app/forms.pyを作成。

 

app/forms.py

 

このクラスがDjango上でフォームの入出力を管理してくれます。

 

Template作成

画面を表示するテンプレートのHTMLファイルを以下の3ファイル作成します。

 

  • base.html(元のHTML、以下の2つはこのファイルを継承する)
  • index.html(/app/indexで表示するHTML)
  • setup.html(/app/setupで表示するHTML)
  • result.html(/app/resultで表示するHTML)

 

app/templates/appディレクトリを作成し以下の内容で4ファイルを作成。

 

app/templates/app/base.html

 

app/templates/app/index.html

 

app/templates/app/setup.html

 

app/templates/app/result.html

 

いいね用のクラス作成

今回で最も需要な部分です。実際に自動でいいねを行ってくれる処理を作ります。

分かりやすいようにディレクトリを分けます。app/likeディレクトリを作成し、以下の3ファイルを作ります。

 

  • like.py(メインのクラスファイル)
  • config.py(設定を書くファイル)
  • __init__.py(空ファイル)

 

app/like/like.py

 

app/like/config.py

 

app/like/__init__.py

空ファイルで作成

 

View作成

最後にViewを作成します。

 

注意点として、DjangoではViewという言葉が画面の表示を処理等のレンダリングを兼ねています。

なのでよく聞くMVCモデルで言うところのVとCを兼ねているイメージです。(正しいか分からない。あくまで自分のイメージ)

 

app/views.py

 

これで完成!!

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

-Python, プログラミング
-, ,

Copyright© クラインの備忘壺 , 2020 All Rights Reserved.