前提・実現したいこと
インスタグラムのデータを呼び込みたい
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
data = pattern.search(script.text).group(1) AttributeError: 'NoneType' object has no attribute 'group'
該当のソースコード
python
1 2from bs4 import BeautifulSoup 3from datetime import datetime 4import sys 5import requests 6import json 7import time 8import openpyxl 9import excel 10import csv 11import re 12 13sleep_timer = 1 14 15def get_json_data(url): 16 17 res = requests.get(url) 18 html = BeautifulSoup(res.content, 'html.parser') 19 20 pattern = re.compile("window._sharedData") 21 script = html.find("script", text=pattern) 22 data = pattern.search(script.text).group(1) 23 json_user_data = json.loads(data) 24 25 return(json_user_data) 26 27def get_hashtag_stats(tags): 28 29 for tag in tags: 30 31 json_hashtag = get_json_data('https://www.instagram.com/explore/tags/'+str(tag)+'/') 32 33 number_of_posts = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['count'] 34 timestamp_1st = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][0]['node']['taken_at_timestamp'] 35 timestamp_1st = datetime.fromtimestamp(timestamp_1st) 36 timestamp_10th = json_hashtag['entry_data']['TagPage'][0]['graphql']['hashtag']['edge_hashtag_to_media']['edges'][9]['node']['taken_at_timestamp'] 37 timestamp_10th = datetime.fromtimestamp(timestamp_10th) 38 39 #最新の投稿と10個前の投稿の時間の差を求める 40 diff = timestamp_1st - timestamp_10th 41 42 post_freq= int(diff.total_seconds()/(10*60)) 43 44 output_line = [datetime.now().strftime("%d/%m/%Y %H:%M:%S"), str(tag), str(number_of_posts), str(post_freq)] 45 print(output_line) 46 47 with open(r'./hashtags_stats.csv', 'a') as f: 48 writer = csv.writer(f) 49 writer.writerow(output_line) 50 51 if sleep_timer != 0: 52 time.sleep(sleep_timer) 53 54 return() 55 56def clean_hashtags(tags): 57 58 if tags[0] == '#': 59 60 tags = tags.replace(' ', '') 61 hash_array = tags.split('#') 62 63 else: 64 65 hash_array = tags.split(',') 66 67 taglist = [a for a in hash_array if a != ''] 68 69 return(taglist) 70 71 72if __name__ == "__main__": 73 74 hashtags = "#LondonNature #britain #centrallondon #england #explorelondon #greatbritain #ig_london #igerslondon #ilovelondon #ldn #london #london4all #london_masters #london_only #londonbest #londoncity #londoner #londonlife #londonlover #londontown #londonuk #londonview #lovegreatbritain #prettycitylondon #prettylittlelondon #shutup_london #thisislondon #uk #unitedkingdom #visitlondon #visituk" 75 get_hashtag_stats(clean_hashtags(hashtags)) 76 77
試したこと
groupもなくしたし、
そもそも、dataをプリントしても何もデータ読み込めない
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。