2016-12-05 2 views
0

Я написал этот бит кода, чтобы извлечь идентификатор и ролл с веб-сайта.Как извлечь несколько строк из идентичных идентификаторов с помощью Python

import requests 
import json 
import time 
import urllib 


def ColorRequest(a=True): 
url = 'http://csgoroll.com/v1/roulette/state?token=bcb7841fe779ac0ae2a9e4f882ed3961ce0d714215fede3c025a24fc418e123dcb5a0a47a0ba1825225c14b39e08ea399422eb2b012689a79c41f42b529640e37d5374125c3fef409b2d165c223923dbc27f320c53bf10e46e701058251c97b9' # Could add a + pls str(pagesomething) to add on to the url so that it would update 
sourcecode = requests.get(url) # requests the data from the site 
plaintext = sourcecode.text # imports all of the data gathered 

obj = json.loads(plaintext) 
for roll in obj['rolls']: 

    print(roll['id'], roll['roll']) 
    while a == True: 
     ColorRequest() 
     time.sleep(1000) 


if __name__ == '__main__': 
ColorRequest() 

Но данные выглядит следующим образом

{ 
"gameState": 
"1", 
"currentGame": "9965464", 
"startDate": "Mon Dec 05 2016 23:30:42 GMT+0000 (UTC)", 
"rolls": [ 
    { 
     "id": 9965465, 
     "hash": "f39a2391bd589fc217b73c407e316ff440dc920657929bd7ca9b7adddf0cedc9", 
     "roll": 11, 
     "state": 3, 
     "created_at": null, 
     "updated_at": null 
    }, 
    { 
     "id": 9965466, 
     "hash": "45eaa2bddb3281f036932de5839d4ccc2b28ebb1d4ded8f6e67cbff273831c73", 
     "roll": 3, 
     "state": 3, 
     "created_at": null, 
     "updated_at": null 
    }, 
    { 
     "id": 9965467, 
     "hash": "b6142c643816d2913a29518fdf624fcf577397af4ebfb008d61c4f1cf9d6ba3e", 
     "roll": 1, 
     "state": 3, 
     "created_at": null, 
     "updated_at": null 
    }, 

Мой вопрос, как я могу получить свою программу, чтобы признать, что существует несколько уровней данных для того, чтобы читать и хранить его, пока он будет только захватите верхний результат и сохраните его во время выполнения.

+0

Что такое 'layer'? 'рулоны'? 'len (obj ['rolls'])'? Нет никаких indentical 'id'. BTW 'obj = sourcecode.json()' – furas

+0

Непонятно, что вы хотите: ваш код в настоящее время входит в рекурсивный цикл после того, как он печатает первый «ролл». Это кажется совершенно ненужным. Итак, чего вы хотите достичь? Сделайте запрос, а затем распечатайте все данные 'roll'? И как только вы сделали повторение, каждый скажет 1 секунду? – sal

ответ

0

Проверьте len (rolls), чтобы убедиться, что это не менее 1, а затем просто установите значение 1-го элемента, например top_id = obj ['rolls'] [0] ['id'] или top_state = obj [ 'rolls'] [0] ['state'] надеюсь, что это поможет.

0

Если я правильно понимаю, все, что вы хотите сделать, это повторить цикл каждые 1000 секунд и на каждой итерации распечатать все данные в rolls.

import requests 
import time 

def ColorRequest(): 
    url = 'http://csgoroll.com/v1/roulette/state?token=bcb7841fe779ac0ae2a9e4f882ed3961ce0d714215fede3c025a24fc418e123dcb5a0a47a0ba1825225c14b39e08ea399422eb2b012689a79c41f42b529640e37d5374125c3fef409b2d165c223923dbc27f320c53bf10e46e701058251c97b9' # Could add a + pls str(pagesomething) to add on to the url so that it would update 
    sourcecode = requests.get(url) # requests the data from the site 
    obj = sourcecode.json() 
    for roll in obj['rolls']: 
     print(roll['id'], roll['roll']) 

if __name__ == '__main__': 
    while True: 
     ColorRequest() 
     time.sleep(1000) # these are seconds, ~17min 
Смежные вопросы