Pythonでsnscrapeを使用しSNSをスクレイピングする

Pythonでsnscrapeを使用し、SNSをスクレイピングしてみます。

snscrapeは、個人のAPIキーを必要としないソーシャルネットワーキングサービス(SNS)のスクレーパーです。snscrapeで対応しているSNSは、Facebook,Instagram,Reddit,Telegram,Twitter,VKontakte,Weibo (Sina Weibo)です。

なお、snscrapeは、開発バージョンでのみ使用できるということを理解しておきましょう。

またsnscrapeを使用するには、Python3.8以降の環境が必要です。snscrapeをインストールすると、Pythonパッケージの依存関係が自動的にインストールされます。

snscrapeライブラリ・モジュール(https://github.com/JustAnotherArchivist/snscrape)を使用しますが、snscrapeライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前のインストールが必要です。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■snscrapeをインストールする

それでは、Heliumをインストールするために、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。

pip install snscrape

起動後、上記のコマンドを入力し、Enterキーを押します。

なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。

py -3.8 -m pip install snscrape

切り替えるために、上記のコマンドを入力し、Enterキーを押します。

Defaulting to user installation because normal site-packages is not writeable
Collecting snscrape
Downloading snscrape-0.3.4-py3-none-any.whl (35 kB)
Collecting lxml
Downloading lxml-4.6.3-cp38-cp38-win_amd64.whl (3.5 MB)
|████████████████████████████████| 3.5 MB 1.7 MB/s
Requirement already satisfied: beautifulsoup4 in c:\users\user_\appdata\roaming\python\python38\site-packages (from snscrape) (4.9.3)
Requirement already satisfied: requests[socks] in c:\users\user_\appdata\roaming\python\python38\site-packages (from snscrape) (2.25.1)
Requirement already satisfied: soupsieve>1.2; python_version >= "3.0" in c:\users\user_\appdata\roaming\python\python38\site-packages (from beautifulsoup4->snscrape) (2.2.1)
Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests[socks]->snscrape) (4.0.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests[socks]->snscrape) (1.26.5)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests[socks]->snscrape) (2021.5.30)
Requirement already satisfied: idna<3,>=2.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests[socks]->snscrape) (2.10)
Collecting PySocks!=1.5.7,>=1.5.6; extra == "socks"
Downloading PySocks-1.7.1-py3-none-any.whl (16 kB)
Installing collected packages: lxml, snscrape, PySocks
Successfully installed PySocks-1.7.1 lxml-4.6.3 snscrape-0.3.4

Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、snscrapeが正常にインストールされたことになります。

なお、今回はsnscrapeのバージョン0.3.4をインストールしました。

■Twitterのツイートをスクレイピングする

インストール完了後、Twitterで特定のキーワードのツイートをスクレイピングするスクリプトを書いていきます。

■コード

import pandas as pd
import snscrape.modules.twitter as sntwitter
import itertools

#ツイート検索するキーワード
search = "大阪"

#Twitterでスクレイピングを行い特定キーワードの情報を取得
scraped_tweets = sntwitter.TwitterSearchScraper(search).get_items()

#最初の10ツイートだけを取得し格納
sliced_scraped_tweets = itertools.islice(scraped_tweets, 10)

#データフレームに変換する
df = pd.DataFrame(sliced_scraped_tweets)

print(df)

sntwitter.TwitterSearchScraper()関数の括弧内に、引数,パラメータとして、search変数に格納した検索キーワードを渡します。Twitter検索でツイートをスクレイピングする。スクレイピングした情報をscraped_tweets変数に格納し、itertools.islice()関数を使用し、スクレイピングした情報をコピーし、Twitter検索結果の最初の10ツイートだけを、sliced_scraped_tweets変数に格納。

格納後、pd.DataFrame()関数を使用し、sliced_scraped_tweets変数内の情報を、データフレームに変換し、df変数に格納。

df変数をprint()関数で出力する。

■実行

このスクリプトを「twitter_scraping.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、Twitterで特定のキーワードのツイートがスクレイピングされて、スクレイピングされた情報をデータフレームに変換し、出力させることができました。

コメント

タイトルとURLをコピーしました