2017-10-29 10 views
0

아래에 링크 된 json의 모든 "작성자"항목을 목록에 저장하려고 시도하고 있지만, Python을 처음 사용하는 사람에게는 매우 새로운 내용입니다. 누군가가 나를 올바른 방향으로 친절하게 안내해 줄 수 있습니까?reddit에서 json 응답을 올바르게 마치는 방법은 무엇입니까?

json으로하십시오 레딧 스레드를 긁어 시도 https://codebeautify.org/jsonviewer/cb0d0a91

: 나는 하위 Reddit에 레딧 게시물에서 URL을 전환하면

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) 

는 다음 작동합니다. 예를 들어, 내가 설정 한 경우

나는이 문제가 json의 디렉토리/트리 (그것이 무엇이든간에)에 대한 이해가 부족하다고 생각합니다. 나는 몇 시간 동안 끊어져 있었고 어떤 도움을 주셔서 감사합니다.

오류 :

역 추적 (마지막으로 가장 최근 통화) : 파일 "/home/usr/PycharmProjects/untitled/delete.py", 라인 (14), 에서 D에서 아이 [ '데이터'] [ 'children'] : TypeError : 목록 색인은 str이 아닌 정수 또는 조각이어야합니다.

+1

'd'는리스트이거나'd [ 'data']'는리스트입니다. print (d)를 추가하고 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

훌륭한 작품입니다. 고맙습니다. 감사합니다. 작은 사람을 도울 시간과 노력에 감사드립니다. 좋은 하루 되세요. –