質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Instagram API

Instagram APIは、写真共有SNSであるInstagramの投稿写真をWebサイトに掲載するためのAPIです。取得することでWebサイトと連携し、自動的に投稿写真を表示することができます。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1615閲覧

【Python】AttributeErrorの原因がわからない

horihoriwww

総合スコア5

Instagram API

Instagram APIは、写真共有SNSであるInstagramの投稿写真をWebサイトに掲載するためのAPIです。取得することでWebサイトと連携し、自動的に投稿写真を表示することができます。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/10 13:09

■概要
Instagramで指定したハッシュタグの投稿数を自動的に取得するコードを書いています
以下のコードを実行しているのですが、エラーが手で来てしまい
色々調べたのですが、まだまだ初心者で知識が及ばず、皆様のお力をいただけますと幸いです。

■現状のコード

html

1from bs4 import BeautifulSoup 2import requests 3import json 4import re 5import pprint 6 7def get_json_data(url): 8 9 res = requests.get(url) 10 html = BeautifulSoup(res.content, 'html.parser') 11 12 pattern = re.compile('window._sharedData = ({.*?});') 13 script = html.find("script", text=pattern) 14 data = pattern.search(script.text).group(1) 15 json_user_data = json.loads(data) 16 17 return(json_user_data) 18 19def get_hashtag_stats(tags): 20 21 for tag in tags: 22 23 json_hashtag = get_json_data('https://www.instagram.com/explore/tags/'+str(tag)) 24 print(json_hashtag) 25 26 number_of_posts = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['count'] 27 # timestamp_1st = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][0]['node']['taken_at_timestamp'] 28 # timestamp_1st = datetime.fromtimestamp(timestamp_1st) 29 # timestamp_10th = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][9]['node']['taken_at_timestamp'] 30 # timestamp_10th = datetime.fromtimestamp(timestamp_10th) 31 # 32 # #最新の投稿と10個前の投稿の時間の差を求める 33 # diff = timestamp_1st - timestamp_10th 34 # 35 # post_freq= int(diff.total_seconds()/(10*60)) 36 37 # output_line = [datetime.now().strftime("%d/%m/%Y %H:%M:%S"), str(tag), str(number_of_posts), str(post_freq)] 38 # print(output_line) 39 # 40 # with open(r'/Users/sakailab/Desktop/Report_Python/hashtags_stats.csv', 'a') as f: 41 # writer = csv.writer(f) 42 # writer.writerow(output_line) 43 44 if sleep_timer != 0: 45 time.sleep(sleep_timer) 46 47 return() 48 49def clean_hashtags(tags): 50 51 if tags[0] == '#': 52 53 tags = tags.replace(' ', '') 54 hash_array = tags.split('#') 55 56 else: 57 58 hash_array = tags.split(',') 59 taglist = [a for a in hash_array if a != ''] 60 61 return(taglist) 62 63 64if __name__ == "__main__": 65 66 hashtags = "#LondonNature #britain #centrallondon #england" 67 print(hashtags) 68 get_hashtag_stats(clean_hashtags(hashtags)) 69 # pprint(taglist)

■エラー

html

1Traceback (most recent call last): 2 File "hashtag_posts.py", line 44, in <module> 3 get_hashtag_posts(clean_hashtags(hashtags)) 4 File "hashtag_posts.py", line 21, in get_hashtag_posts 5 json_hashtag = get_json_data('https://www.instagram.com/explore/tags/'+str(tag)) 6 File "hashtag_posts.py", line 13, in get_json_data 7 data = pattern.search(script.text).group(1) 8AttributeError: 'NoneType' object has no attribute 'group'

■参考にしたもの
https://note.com/masarusuzuki/n/n5a9216060fd8

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/10 14:25

スクレイピングでしょうか?スクレイピングであればインスタグラムは禁止のはずです。
guest

回答1

0

検索対象にマッチしたものがないということではないですか?
このエラーはgroupオブジェクトに何も入っていないつまりNoneが入ります。

投稿2020/08/11 06:07

Hyugopython

総合スコア150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問