前回はTwitterのツイートをスクレイピングで取得しましたが、今回はもっと本格的にやってみます。

Twitterはスクロールすると過去のツイートをみることができます。そのためスクレイピングで過去のツイートを取得するためにはスクロールさせる必要があります。

Seleniumなら以下の方法でスクロールさせることができます。

ではどこまでスクロールさせるかどうやって調べればいいのでしょうか? HTMLを調べてみると各ツイートはarticleタグで囲われています。そこで最後のarticleタグがある座標を調べればそこまでスクロールさせればよいことがわかります。

スクロールさせても以前取得した過去のツイートをもう一度拾ってしまうことがあります。Seleniumだと以下の方法でIDのようなものを取得できます(HTMLの中にはない。Selenium独自のものか?)。そこでこれを保存しておけばすでに取得したものかどうかを判別することができます。

それからツイートだけでなく、日時、ツイート数、いいねの数も取得します。

時刻はHTMLを調べてみると

このような形になっているので

これで time = “2021-03-05 14:11:50″が取得できます。

ではさっそくやってみましょう。

ボタン1をクリックするとSeleniumが起動してブラウザが立ち上がります。

ボタン2をクリックするとツイートと日時、リツイート数、いいね数を取得して、スクロールします。取得したデータはリストのなかに保存します。

リツイート数、いいね数はarticleタグのなかにある div class = “css-1dbjc4n r-xoduu5 r-1udh08x”タグのうち、2番目と3番めのものを調べればわかります。

ボタン1を押したあとボタン2を押すたびに古いツイートがリストのなかに取得されていきます。

ツイートが取得できたらこれをExcelファイルとして保存します。