2017-10-29 18 views
0

以下にリンクされているjsonのすべての "著者"エントリをリストに保存しようとしていますが、Pythonにはまったく新しいものです。誰かが親切に私を正しい方向に向けることができますか?redditからjsonの応答を正しくスクラップする方法は?

JSON:redditのスレッドをこすりしようとhttps://codebeautify.org/jsonviewer/cb0d0a91

import requests 
import json 

url ="https://www.reddit.com/r/easternshoremd/comments/72u501/going_to_be_in_the_easton_area_for_work_next_week.json" 

r = requests.get(url, headers={'User-agent': 'Chrome'}) 
d = r.json() 

scrapedids = [] 

for child in d['data']['children']: 
    scrapedids.append(child['data']['author']) 

print (scrapedids) 

私はsubredditへのredditのポストからURLを切り替えると、それは動作します。たとえば、私が設定した場合

url = ("https://www.reddit.com/r/easternshoremd.json") 

私はこの問題が、jsonのディレクトリ/ツリー(それが何であれ)には理解できないと考えています。私は数時間吊り上げていて、何か助けに感謝しています。

エラー:

トレースバック(最新の呼び出しの最後):Dでの子供のための で ファイル "/home/usr/PycharmProjects/untitled/delete.py"、ライン14、[ 'データ'] ['children']: TypeError:リストインデックスは、strではなく整数またはスライスでなければなりません

+1

'd'はリスト、' d ['data'] 'はリストです。 dを作成した場所の下にprint(d)を追加してからprint(d ['data'])を実行すると、どのファイルが見つかるかを知ることができます。 – jmetz

+1

jsonを見ると、ベースjsonオブジェクトがリストであることがわかります。「データ」は最初のエントリにあります。したがって、あなたは[0] betwen childと['data']を追加することができます。 – MegaIng

答えて

1

JSONへのリンクが含まれています。これは、ルートが配列であることを示しています。私はkind属性(「リスト」)に関するものlistingsdに改名

import requests 
import json 

url ="https://www.reddit.com/r/easternshoremd/comments/72u501/going_to_be_in_the_easton_area_for_work_next_week.json" 

r = requests.get(url, headers={'User-agent': 'Chrome'}) 
listings = r.json() 

scrapedids = [] 

for listing in listings: 
    for child in listing['data']['children']: 
     scrapedids.append(child['data']['author']) 

print (scrapedids) 

注:

したがって、あなたのコードでは、より多くのようになるはずです。

+0

素晴らしい作品です。私はあなたに非常に感謝し、あなたの援助に感謝しています。私は小さな男を助けるためにあなたの時間と努力を感謝します。良い一日を過ごしてください。 –

関連する問題