Python

【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる

2022年4月10日

【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる

こんにちは。TATです。

今日のテーマは「【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる」です。

 

Instagramにログインして、特定のキーワードで検索して、出てきた投稿にいいね!をする、という一連の流れをSeleniumを使って自動化してみます。

Seleniumはブラウザーをプログラムを通してコントロールできるソフトです。

クリックや画面遷移、スクロール、スクショの保存など、普段我々がネットサーフィンの中で行っている作業のほとんどを自動化することができます。

 

このSeleniumを利用して、Instagramのいいね!自動化に挑戦します。

いいね!を押しまくっていると結構フォロワーが増えるので、うまく使えば効率的にフォロワーを増やすことができます。

ただし、調子に乗りすぎると警告が出てしまう場合もあるのでご注意ください。

 

ちなみにここで紹介するコードはご自由にコピって使っちゃってください。

Seleniumを導入して、あとはusernameとpasswordさえ変更してしまえばすぐに利用可能です!

 

【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる

【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる

まずは自動いいね!までの流れを確認する

まずは自動いいね!までの流れを確認していきます。

自動いいね!までの流れ

  1. Instagramにログインする
  2. 特定のタグで検索する
  3. 検索結果の投稿に順番にいいね!を押す

 

流れとしてはこんな感じかと思います。

これをプログラムで自動化するとなると少しプロセスを分解していく必要があります。

少し細かくプロセスをまとめてみます。

自動いいね!までの流れ

  1. Seleniumを起動する
  2. Instagramログインページに遷移
  3. UsernameとPasswordを入力してログイン
  4. 特定のタグの検索結果ページに遷移
  5. 投稿一覧を取得
  6. 各投稿に対して、
    1. 投稿ページに遷移
    2. いいね!を押す(既に押されてたらスキップする)

 

上記の流れを実装することができれば、自動でいいね!をすることができます。

早速やっていきましょう。

 

Seleniumによる実装

それでは、実際に実装していきます。

流れがわかるように順番にコードを解説していきます。

 

実装するにはSeleniumが必要です。

"pip install selenium"でSeleniumをインストールしてください。

さらにWebdriverのダウンロードが必要です。こちらからダウンロードしてください。

特にこだわりがなければChromeで良いかと思います。

ダウンロードしたらPythonファイルと同じ場所に保存してください。

 

Seleniumの準備が完了したら、早速コードを書いていきましょう。

 

Seleniumを起動する

まずはSeleniumを起動するコードを書きます。

これをするには、次のコードを実行すればOKです。

 

 

これでChromeが起動します。ちなみにWebdriverが別のフォルダーに保存されている場合はexecutable_pathで指定してあげればOKです。

この状態では、何のページも開いていないのでこんな感じで何も表示されません。

driverという変数にクラスが格納されているので、今後はこれを弄ってブラウザを操作していきます。

Seleniumで起動すると、「Chromeは自動テストソフトウェアによって制御されています。」という警告が表示されます。

これでSeleniumによるChromeの起動は完了です。

 

Instagramログインページに遷移

次にInstagramのログインページに遷移します。

get関数を使えば終了します。

ここに任意のURLをセットすればページ遷移できます。

 

 

これでInstagramのログインページが表示されました。

implicitly_waitを入れておくと、次の処理を行う際に、設定した秒数分処理を繰り返しながら待ってくれます。

ページが読み込む前に次の処理を行おうとするとエラーになってしまうので、この1行を入れることで動作が安定します。

ページ読み込み時間によるエラーが予想される箇所にはこれを入れておくことをお勧めします。

 

UsernameとPasswordを入力してログイン

次にUsernameとPasswordを入力してログインします。

ソースを見ると、usernameとpasswordという名前のinputがそれぞれあることがわかります。

ここを指定して文字を入力すればOKです。

 

文字を入力するには、send_keys関数を使います。

入力したい要素を取得して、send_keys関数で任意を文字を入力すればOKです。

 

UsernameとPasswordがそれぞれ書き換えてください。

driver.find_element_by_css_selectorを使えば、条件にマッチしたタグを取得することができます。

この場合は、nameがusernameをinputタグを取得すると言った具合です。

取得したものを別の変数に格納し、send_keysで文字を入力しています。

 

このコードを実行するとこんな感じで文字が入力されていることが確認できます。

 

最後にログインボタンをクリックすればOKです。

ソースを見ると、typeがsubmitであるinputがあることがわかります。

submitボタンはここのソース内だと1つしかないので、これを指定すればうまくいきます。

 

ボタンをクリックするにはclick関数を使います。

 

このコードを実行すればログインが完了します。

無事にログインできました。

 

特定のタグの検索結果ページに遷移

次に特定のタグの検索結果ページに遷移します。

Instagramのタグページはhttps://www.instagram.com/explore/tags/{{タグ名}}/となっています。

さらに最後にhl=jaをつけてあげると、日本語版で表示されます。これはあってもなくてもOKです。

 

ページ遷移をするにはget関数を使えばOKでしたね。

例として、"株式投資"で検索してみます。

この場合、https://www.instagram.com/explore/tags/株式投資/ に遷移すればOKです。

 

これでタグ一覧のページが取得できます。

一応画像にはモザイクかけました。

 

投稿一覧を取得

次の作業は表示された投稿一覧を取得することです。

ここでは、各投稿のURLがわかればOKです。

 

ソースコードを見ていくと、それぞれの投稿にはaタグがあることがわかります。

つまり、全部のaタグを取得すればOKです。

 

これをするにはfind_elements_by_tag_nameを使います。

find~にはelementとelementsがあります。

elementは最初にマッチする要素を、elementsはマッチする要素一覧をリスト形式で取得します。

ここでは、複数個あることが自明なのでelementsにします。

 

全部で50個取得できました。

 

それぞれの要素からリンクを取得できるので、これで準備はOKです。

 

ちなみにそれぞれのリンクを見てみると、投稿ページではないリンクも取得してしまっていることがわかります。

投稿ページだとURLの途中に/p/が入ります。

これを回避するには、そもそもaタグの取得方法を見直すか、リンクの確認ロジックを導入する必要が出てきます。

今回は確認ロジックをいれます。こっちの方が楽なのでw

 

各投稿に対して、投稿ページに遷移していいね!を押す

あとは各投稿に遷移して、いいね!を押していけばミッション完了になります。

 

いいね!を押す

まずはいいね!を押す手順を確認します。

適当なタグページに遷移します。

他人の投稿を晒すのは忍びないので、僕のアカウントの画像でみていきます。

 

こちらです。

 

ここでいいね!のソースコードを確認します。

 

aria-labelがいいね!となっているsvgタグがあることがわかりますね。

構造をみるとsection→button→span→div→span→svgとなっていますね。

ちなみにHTMLを見るとこのsvgタグはなぜか2つあり、片方はクリックができますが、もう片方はクリックできない仕様になっています。

この仕様は謎です。

クリックできるのはspanの中にあるものなので、これを明確に指定してあげる必要があります。

 

こんな感じで取得できます。

 

これをクリックすればOKです。

クリックするにはClick関数を使います。

 

これでいいね!を押すことができます。

ちなみにすでにいいね!が押されている場合、aria-label=いいね!の要素がなく、『aria-label=「いいね!」を取り消す』という内容に変わっています。

よって、『「いいね!」を取り消す』を含む要素がある場合には、既にいいね!がされているのでスキップすればOKです。

 

これを行うにはBeautifulSoupでhtmlを解析して確認します。

 

上記のコードを実行することで、既にいいね!がされている投稿をスキップすることができます。

 

各投稿に繰り返す

この動作を各投稿に繰り返せばOKになります。

ついでに投稿のURLを確認するロジックも加えます。

投稿URLでない場合はスキップします。

 

 

上記のコードを実行すると、各投稿に対していいね!を実行します。

is_post_url関数でURLが投稿ページでないかどうか、is_likedで既にいいね!が押されているかどうかをチェックしています。

これでミッション完了です。

 

これを定期的に繰り返せば、自動でいいね!をつけまくることができます。

ただし注意点として、あんまり調子こいてやりまくるとBot判定される場合があります。

それを回避するためにも、数秒待機するためのロジックをいれています。

これは1〜5秒のランダムの値を待機するという内容になります。

 

コードをまとめて公開!

最後にこれまで解説したコードをまとめて公開します。

みやすくするために、機能ごとに関数で分けました。

Seleniumを導入したうえ、こちらをコピーしてUsernameとPasswordを変更いただき、searchWordで任意の検索ワードを設定いただければすぐに動作するかと思います。

動作しない場合は動作環境の確認など、エラーメッセージに従って対応してみてください。

 

定期的に実行する際には、ログイン状態を維持したままタグページの検索といいね!を繰り返した方がいいです。

毎回ログインしているとすぐにBotと怪しまれます。

Bot判定されるとログインできなくなります。その際にはパスワードを変更する必要が出てきたりと面倒なのでお気をつけください。

 

いずれにしても、利用する際には自己責任でお願い致します。

 

やり方は他にもたくさんあります

ここまでで、Seleniumを使ってInstagramで自動いいね!をする方法について解説してきました。

ここでお伝えしたやり方はあくまでの数多あるうちの1つに過ぎません。

このほかにもいろいろなやり方があります。

 

僕の場合は投稿URLに遷移していましたが、クリックして投稿を表示してからいいね!をすることも可能ですし、一度に多くの投稿を対象にしたいのであれば、スクロール機能を活用してさらに写真を読み込むことだってできます。

その気になればここで紹介した内容はすべてSeleniumなしで実装することも可能です。

 

あくまでもここで紹介した方法は一例に過ぎないので、参考にしていただきつついろいろな方法を試していただければと思います。

 

結局はPythonが最強!

本記事で紹介したコードは全てPythonです。

Pythonを使うと複雑な処理でも比較的短いコードで実装することができます。

今回解説したSeleniumを使った処理の他にも、Webスクレイピングやデータ分析、AI関連に強くて、Pythonは今世界中で人気を集めている言語です。

【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】

 

Pythonは世界中で需要が高まっている言語であり、習得しておくと仕事や転職でも有利になります。

僕自身も社会人になってからPythonを独学しました。それくらい学びやすい言語でもあります。

もし興味があれば、とてもおすすめです。

プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】
【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】
【まとめ】Pythonが学べるおすすめプログラミングスクール5選

 

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

 

まとめ

いかがでしたでしょうか。

ここでは「【Pythonコード解説】SeleniumでInstagramの自動いいね!をしてみる」というテーマで解説してきました。

 

Seleniumを活用すれば、ログインなどの複雑な処理も比較的に短いコードで実装できることがおわかりいただけたのではないでしょうか。

うまくこのコードを使えば、定期的にいいね!を押して効率的にフォロワーさんを増やすことも可能です。

ただし、調子に乗り過ぎるとBot判定されてしまうので、あくまで自己責任でご利用ください。

 

ここまで読んでくださり、ありがとうございました。

 

 

Pythonの独学ロードマップを作りました!

社会人になってからPythonを独学した経験を活かして、独学ロードマップを作りました。

これからPythonを学ぼうとしている方、学習中の方の参考になれば嬉しいです。

【決定版】Python独学ロードマップ【完全初心者からでもOKです】
【決定版】Python独学ロードマップ【完全初心者OK】

続きを見る

 

おすすめのPython学習法!

Udemy

Pythonを独学するならUdemyがおすすめです。

動画教材なので理解がしやすく、セールで購入すれば90%オフとかで買えるのでコスパも最強です。

おすすめポイント

  • 動画教材で理解しやすい
  • セール中なら90%オフとかで購入可能
  • プログラミングスクールよりも格安で良質なコンテンツが手に入る
  • 30日間の返金保証
  • 講師に質問できる&過去の質問を閲覧できる

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】

続きを見る

 

データミックス(datamix)

Pythonによるデータ分析に興味のある方は、データミックス(datamix)がおすすめです。

プログラミングだけではなく、データサイエンスやビジネスに関するノウハウも合わせて学ぶことができます。

おすすめポイント

  • データサイエンティストが開発・監修した体系的かつ実践的に学べるカリキュラム
  • Pythonなどの「スキル」のみでなく、データサイエンスの本質である「理論」や「思考」が学べる
  • エンジニアに限らず、多様なキャリアを形成・構築できる
  • オンラインチャットツールによる質問対応やコミュニティなどの充実したフォロー体制
  • 専門実践教育訓練給付金の対象講座で授業料の最大70%還付

\データサイエンスとビジネスが学べる/

データミックス(datamix)を詳しく見る!

エンジニア転職だけでなく起業やフリーランスなど多様なキャリア形成・構築に繋がる

データミックス(datamix)の特徴や評判は?【データサイエンスとビジネスが学べる】

続きを見る

 

SAMURAI TERAKOYA

プログラミングスクールでコストを重視するならSAMURAI TERAKOYAがおすすめです。

月額料金さえ支払えば、その他の費用は一切かかりません。

おすすめポイント

  • 継続しやすい安価な月額定額制(月額1,980円〜)
  • 入会金不要、いつでも退会可能
  • 月1回のオンラインレッスンが受けられる
  • 現役エンジニアに質問し放題
  • 28種類の教材が利用し放題

月額1,980円~のサブスク型

「SAMURAI TERAKOYA」を詳しく見る

入会金不要で違約金なしでいつでも退会可能!気軽に始められます!

「SAMURAI TERAKOYA」の特徴は?評判は?【サブスク型でコスパ最強!】
「SAMURAI TERAKOYA」の特徴は?評判は?【サブスク型でコスパ最強!】

続きを見る

-Python
-, ,

© 2022 気ままなブログ