2012-11-01 8 views
1

여기 함수를 통해 실행하려는 웹 사이트 목록을 만들었습니다. (내게 어쨌든)목록의 각 항목을 반복하는 함수

import requests 

item_ids=[11732, 536] 
url_template = 'http://www.grandexchangecentral.com/include/gecgraphjson.php?jsid=%r' 
your_sites = [] 

for i in range(0, len(item_ids)): 
    result = url_template % item_ids[i] 
    your_sites.append(result) 

까다로운 부분은 함수 및 your_sites 통해 반복하여 각 항목을 취하는 함수를 생성한다. 나는 어떤 종류의 for 루프를 사용하는 것에 대해 생각했지만 구현 방법을 잘 모르고 어쨌든 더 효율적인 방법이있을 것이라고 생각했다. 내 시도는 TypeError: 'NoneType' object is not iterable입니다.

def data_grabber(): 
    for i in range(0, len(your_sites)): 
     url = your_sites[i] 
     r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'}) 
     data = r.json 
     prices = [i[1] for i in data] 

나는 그것이 각 웹 사이트에 대한 prices를 반환하고 싶습니다,하지만 난 단지 내 노력에 대한 오류 및 없음 값을 얻을 수 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.

+4

"목록을 함수를 통해 실행"은 목록 이해를위한 주요 사용 사례입니다. –

+1

(1)'data_grabber' 함수에서 들여 쓰기를 수정하십시오. (2)이 오류의 원인을 정확히 파악할 수 있도록 전체 추적을 게시하십시오. – inspectorG4dget

+2

map()을 (를) 찾고 계십니까? http://docs.python.org/2/library/functions.html#map – Bitwise

답변

1

your_sites을 전역 변수로 지정하지 않으면 매개 변수로 전달하기가 쉽습니다. 당신은 당신이 관심있는 객체를 반복, for 루프를 명시 적으로 인덱스가 필요하지 않습니다. 당신이을 때 명시 적으로 인덱스가 필요합니다, 당신은 r.json 인 경우 수행 할 작업을 enumerate()

def data_grabber(your_sites): 
    for url in your_sites: 
     r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'}) 
     data = r.json # if r.json None the next line will fail 
     prices = [i[1] for i in data] 

확실하지를 사용 없음. 이 같은 것을 시도 할 수 있습니다.

 data = r.json or [] 
관련 문제