twitterのアカウントのフォロワーをseleniumで集めてみる

目次

  1. アカウントを集める理由

  2. 事前準備

  3. コードとその解説

  4. 結果





アカウントを集める理由

まずは前回までのあらすじ


ツイッター界隈にはセンスのあるツイートが多い
そんな彼らをささせているフォロワーにはどんな人がいるのかを調査すべく、スクレイピングの旅が始まった。
前回の内容は以下のURlから

urllibとbeautifulSoupでtwitterのツイート数,フォロー数,フォロワー数,いいね数,を取得する






事前準備

今回使用するコードはseleniumのwebdriverを使用します。 ですので、まずはseleniumのwebdriverを手に入れてください
グーグル等で検索すれば記事が出現しますが,希望があれば記事にするのでtwitterのdm等で気軽に話しかけて!

さらにツイッターにログインするコードを継承したコードを使用します
コードは以下のurlから確認してください

seleniumでtwitterに自動的にログインしてみた(RPA,スクレイピング)


それでもわからない時はやはり直接聞いてもらった方がいいので、dm等お願いします
https://twitter.com/matuki_no_ukiwa



コードとその解説


以下がスクレイピング用のコードです
やっていることはいつも通り単純
1,ツイッターにログインする
2,特定のアカウントのフォロワーのページへ移動する
3,スクロールと@のつくコードを取得し続ける
4,100回スクロールするか,Ctrl +C でエラーを発生させる
5,エラー発生した時点で現在集まっているアカウントを全てファイルに書き込む

from TwitterDriver.TwitterDriver import TwitterDriver
from TwitterDriver.GoFollowerDriver import GoFollowerDriver
from TwitterDriver.CollectAtmarksDriver import CollectAtmarksDriver
from bs4 import BeautifulSoup
from TwitterDriver.TwitterDriver import driver
import time

import pickle


if __name__=="__main__":
    acount_name = "@naokich48445315"

    twitterDriver = TwitterDriver(driver)
    twitterDriver.login()

    time.sleep(3)

    goFollowerDriver = GoFollowerDriver(twitterDriver.driver)
    goFollowerDriver.move_followers_pange(acount_name)

    time.sleep(3)

    collectAtmarksDriver = CollectAtmarksDriver(goFollowerDriver.driver)

    time.sleep(4)

    #あまり褒められたコードではない,気をつけて!
    for i in range(30):
        try:
            collectAtmarksDriver.get_acounts_info_yield()
        except KeyboardInterrupt:
            pass
        except:
            with open('acounts_{}.pickle'.format(acount_name), 'wb') as f:
                pickle.dump(collectAtmarksDriver.acounts, f)
            import traceback
            traceback.print_exc()
    
    driver.close()


    with open('acounts_{}.pickle'.format(acount_name), 'wb') as f:
        pickle.dump(collectAtmarksDriver.acounts, f)





以下のコードが、スクロールとアカウントの追加を行うコードです
set関数は重複を自動で取り除いてくれるリストのようなもので、
これを実装しているself.acountsにユーザー名をaddで追加していきます

CollectAtmarksDriver.py
    
from TwitterDriver.TwitterDriver import TwitterDriver
from TwitterDriver.GoFollowerDriver import GoFollowerDriver
from bs4 import BeautifulSoup
from TwitterDriver.TwitterDriver import driver
import time

import pickle

class CollectAtmarksDriver (TwitterDriver):
    def __init__(self, arg_driver):
        super().__init__(arg_driver)
        self.scroll_count = 0
        self.acounts = set()

    def get_acounts_info_yield(self):
        html = self.driver.page_source
        bs_obj = BeautifulSoup(html,"lxml")
        acount_tags = self.driver.find_elements_by_xpath('//div[@dir="ltr"]')

        for acount_tag in acount_tags:
            print(acount_tag.text)
            self.acounts.add(acount_tag.text)
        
        time.sleep(1)
        self.scroll(1)
        self.scroll_count+=1
        time.sleep(1)  


    
以下の二つのコードは、フォロワーとフォローしているユーザーの一覧のページへ移動するコードです。

GoFollowerDriver.py
    
from TwitterDriver.TwitterDriver import TwitterDriver

class GoFollowerDriver(TwitterDriver):
    def move_followers_pange(self, group_acount):
         self.driver.get("https://twitter.com/{}/followers".format(group_acount))
    
GoFollowingDriver.py
    
from TwitterDriver.TwitterDriver import TwitterDriver

class GoFollowingDriver(TwitterDriver):
    def move_follow_page(self, group_acount):
        self.driver.get("https://twitter.com/{}/following?lang=ja".format(group_acount))
    



さて、実際に動かしてみましょう

結果

動画は以下の通り
動いているのが確認できると思います

tags

selenium
twitter
python

popular page

プログラミング言語の学ぶ順番について(初心者から中級者へ)後編

Pythonで入門書が終わった後(中級者)に勧めたい技術3選

urllibとbeautifulSoupでtwitterのツイート数,フォロー数,フォロワー数,いいね数,を取得する

another page

urllibとbeautifulSoupでtwitterのツイート数,フォロー数,フォロワー数,いいね数,を取得する

seleniumでtwitterに自動的にログインしてみた(RPA,スクレイピング)

ツイッターの自動的なフォローをpythonとseleniumで!(RPA)

CONTACT ME RIGHT NOW!

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.

5th Avenue, 987
38399, New York,
USA.

Tel. 9888-4394
Mail. hello@example.com
Skype. ExampleSkype

Your message has been sent. Thank you!

© Copyrights Studio. All Rights Reserved

Created with Studio template by TemplateMag
/* フッター/コピーライトのスタイル指定 */ footer { padding: 40px 16px; } footer .copyright small { color: #868686; font-size: 1.4rem; font-family: "Ubuntu Condensed", sans-serif; letter-spacing: .05em; }