インスタグラムスクレイピング:ユーザープロフィールにのチャネル、投稿表現、コメント内容、eメールなどのデータ
この文章ではPython、JSONとSeleniumを利用して指定したのインスタグラムプロフィールたちをスクレイピングできるボットを作る方法をご紹介します。スクレイピングできるデータがプロフィールとか、連絡eメールとか、投稿表現などを含まれています。
この文章ではPython、JSONとSeleniumを利用して指定したのインスタグラムプロフィールたちをスクレイピングできるボットを作る方法をご紹介します。スクレイピングできるデータがプロフィールとか、連絡eメールとか、投稿表現などを含まれています。
インスタグラムスクレイパの制作材料:
Python3, JSON, Selenium, Pandas, BeautifulSoup, CSV
目次
- CSVモジュールでスクレイピしたインスタグラムプロフィールのリンクを開いて読み込み
- Selenium find_element_by_xpath argument方法で指定している要素を見つける
- BeautifulSoup, JsonとSeleniumで包括的な方法に使います
- インスタグラムスクレイピング作成に使う完全バージョンのPythonスクリプト
CSVモジュールでスクレイピしたインスタグラムプロフィールのリンクを開いて読み込み
前回のインスタグラムボット昨製品にはハッシュタグで色々な人気な投稿をスクレイプしてこれらからたくさんユーザープロフィールリンクを取れました。なので、リンクを利用してプロフィール内のデータをスクレイピしておいてもいいです。
まずには、CSVモジュールでこのリンクのファイルを開いて読み込みます。以下はコードのサンプルでございます:
with open('dafdsfere.csv','r') as csv_file:
csv_reading = csv.reader(csv_file)
print(csv_reading[1])
コード編集ツールを使って、例えばSublimeテキストおよびビジュアルスタジオコード、リンクを読み込めるかどうかテストしてやってみます。
Seleniumを利用してインスタグラムアカウントを登録してそれらのリンクをスクレイピングに関して、以下がインスタグラムボット作成の文章をお参考してお願いします。
Selenium find_element_by_xpath 方法で指定している要素を見つける
では、インスタグラムスクレイピングを始めましょう。まずには、読み込めるループを作成して、リンクにつきをクリックする必要があります。Seleniumを利用するには、driver.get()の方法を使ってもいいです。以下はコードのサンプルでございます。
for line in csv_reading:
links = line[1]
try:
Page = driver.get(links)
except Exception as e:
Page = None
try:
次には、特定位置とデータ要素をスクレイピングしたければ、find_element_by_xpath方法を使って考えてもいいです。基本的はこの方法が特定要素に関するXPATHを利用して指定位置をさせるという方法です。
以下のコードにはプロフィールの投稿とフォロアーデータスクレイピング例を上げてやってみると、この方法の使用を見せてみます。
まずに、投稿ポストとフォロアー数字のXPATHを探せてコピーします:
//*[@id="react-root"]/section/main/div/header/section/ul/li[1]/span/span
//*[@id="react-root"]/section/main/div/header/section/ul/li[2]/a/span
そして、Seleniumのfind_element_by_xpath方法を使って指定要素の情報をアウトプットできます、以下がコードのサンプルでございます:
PostNumber = driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/header/section/ul/li[1]/span/span')
PostNumber2 = PostNumber.text
FollowerNumber = driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/header/section/ul/li[2]/a/span')
FollowerNumber2 = FollowerNumber.text
最後には指定プロフィールの投稿とフォロアーのデータを取れた後で、データ達をCSV ファイルに保存していきます。詳しくは前回のインスタグラムボットの文章を参考にしてください。
BeautifulSoup, JsonとSeleniumで包括的な方法に使います
Seleniumしかなければ、あらゆるユーザープロフィールデータをスクレイピすることができません。例えば、もしユーザーがプロフィール紹介のところにメールを残さなければ、スクレイピングがちょっと。
従って、インスタグラム公開プロフィールのAPIを利用できます。以下はAPIのリンクのサンプルでございます:
https://www.instagram.com/sophieapps/?__a=1&__d=dis
何でものプロフィールのリンク後に?__a=1
を加えてこのプロフィールの情報がJSON形式で見せてもらいます。以下は一つのサンプルでございます:
前回にたくさんスクレイピしたプロフィールのデータを取れたければ、スクリプトで大切なコードのパートは以下でございます。
一つはBeautifuSoupとJSONを使ってプロフィールのデータを読み込めます。
for line in csv_reading:
links = line[1]
page = driver.get(links + "?__a=1")
soup = BeautifulSoup(driver.page_source, "html.parser").get_text()
jsondata = json.loads(soup)
もう一つは特定のプロフィールデータを選択して読み込みます
biography = jsondata["graphql"]["user"]["biography"]
インスタグラムスクレイピング作成に使う完全バージョンのPythonスクリプト
もしインスタグラムスクレイピング:ユーザープロフィールにのチャネル、投稿表現、コメント内容、eメールなどのデータのPythonスクリプトが興味があったら、”Python2インスタグラムスクレイピング”を追加してニュースレターをご申し込みください。申し込みを受け取り次第、すぐにおスクリプトを添付してお送りします。
インスタグラムスクレイピング:ユーザープロフィールにのチャネル、投稿表現、コメント内容、eメールなどのデータという文章を読むタイムに楽しんでいただければ嬉しいです。もしできれば、以下の選択中には一つ、二つを選んでEasy2Digitalチャネルを応援したら、誠にありがとうございます。
- 幾つでもいい、PayPalを通して寄付してください。(paypal.me/Easy2digital)
- Easy2DigitalのYoutubeチャネルを登録してください。(Easy2Digital Youtube channel.)
- #easy2digitalのハッシュタグを付けてソーシャルネットワークでこの文章をシェアしてください
- Easy2Digitalコンテンツの更新と注文割引コードを受け取るように、ニュースレターをご申し込みください