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

目次

  1. フォロワー,フォロー,いいね,ツイート数を取得する目的

  2. seleniumではなくurllibを使う理由

  3. コード

  4. 結果





なぜ、フォロワー,フォロー,いいね,ツイート数を取得するのか?

ツイッターを始めて見ると、面白くて魅力のある方々が大勢いらっしゃいます
???「パーシーだよ」
???「パンケーキ!パンケーキ!」
???「恋愛をウォーターフォールかアジャイルかで議論するのをやめなさい」

そういった方々の話に混ぜてもらうのがとても楽しいです笑

引用

と同時にそういった方々がどのようなフォロワーと関わっているのかが疑問に思います
その疑問を機械学習で紐解こうかなと
しかしそのためには、数々の優秀なツイッター民のスクレイピングに対する許可と、
大量のデータを取得し、捌くプログラムが必要になります
ツイッター民の許可は激しくお願いすることで解決するとして
まずは大量のデータを取得するプログラムを作成しなくてはなりません

大量のデータを手動でexcelに入力する訳にもいきませんからね
データはこちらから
そのためにはやはりスクレイピングが一番で機械に任せるのが一番です
そんなわけで、トーマスら最強ツイッター民のフォロワー達を解析すべく旅が始まります



seleniumではなくurllibを使う理由


いつもでしたら、seleniumでtwitterを動かすと思います
実際、僕はseleniumが大好きです
様々なRPAツールがあるなか(UIPath等)それでもseleniumを選んでいます
しかし、今回はseleniumを使いません。
その理由を説明するために、まずはseleniumのメリットについて話をしていきたいと思います。
箇条書きにするとこんな感じ
1,javascriptが動く前提のサイトでもスクレイピングできる
2,「ボタンを押す」等の処理をも可能にする
3,見栄えが良い
確かに、このような動画は華やかでいいですね!
seleniumでもやろうと思えば、フォロワー数やフォロー数を手に入れることはできます
しかしながら、seleniumはブラウザーを動かす処理が入る分、少し動きが遅くなるようです。
フォロワーが2.1万人のアカウントを調べようと思ったらこの遅さは致命的になります。
データを集めるのに一時間もかかるというのは、流石に厳しいものがあります

ですので今回はブラウザーを介さずに早く動かせるurllibというスクレイピング用のライブラリーを使用します





コード



以下がスクレイピング用のコードです

from urllib.request import urlopen
from bs4 import BeautifulSoup
import time


def get_four_number_sleep1(individual_username):

    #配慮
    time.sleep(1)
    url = "https://twitter.com/{}?lang=ja".format(individual_username)
    html = urlopen(url)
    bsobj = BeautifulSoup(html,"lxml")
    tweets  = __helper__("tweets is-active",bsobj)
    following=__helper__("following"       ,bsobj)
    followers=__helper__("followers"       ,bsobj)
    favorites=__helper__("favorites"       ,bsobj)
    return [tweets,following,followers,favorites]


def __helper__(vary,bsobj):
    #HACK:BAD name
    followers_tag = bsobj.find("li",{"class","ProfileNav-item ProfileNav-item--{}".format(vary)})
    if followers_tag is not None:
        followers_num = followers_tag.find("span",{"class","ProfileNav-value"}).attrs["data-count"]
        return int(followers_num)
    else:
        return 0

if __name__=="__main__":
    print(get_four_number_sleep1("@matuki_no_ukiwa"))


この関数の使い方は簡単
1,get_four_number_sleep1の引数に@付きで調べたいユーザー名を入力
2,1秒待つと、「ツイート数、フォロー数、フォロワー数、いいね数」の順で結果が返される
以上です!
ではいざ実行!

結果

実験は僕のアカウントでやってみます
うまく動いているようですね!
次回は、優秀なツイッター民の方々に許可を得た後、
2.1万人分のアカウントで試していきたいと思います

tags

selenium
twitter
python

popular page

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

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

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

another page

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

ツイッターの自動的なフォローをpythonとseleniumで!(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; }