Я могу перебрать две страницы Reddit до определенного момента, затем я получаю сообщение об ошибке, и я не понимаю, почему - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь провести некоторые НЛП на страницах subreddit.У меня есть кусок кода, который собирает кучу данных на двух веб-страницах.Он очищает данные, пока я не достигну диапазона (40).Это было бы хорошо, за исключением того, что я знаю, что в выбранных мной субредитах больше постов, чем в моем коде.

Может кто-нибудь понять, что здесь происходит?

posts_test = []
url = 'https://www.reddit.com/r/TheOnion/.json?after='
for i in range(40):
    res = requests.get(url, headers={'User-agent': 'Maithili'})
    the_onion = res.json()
    for i in range(25):
        post_t = []
        post_t.append(the_onion['data']['children'][i]['data']['title'])
        post_t.append(the_onion['data']['children'][i]['data']['subreddit'])
        posts_test.append(post_t)
    after = the_onion['data']['after']
    url = 'https://www.reddit.com/r/TheOnion/.json?after=' + after

    time.sleep(3)

# Not the onion
url = 'https://www.reddit.com/r/nottheonion/.json?after='

for i in range(40):
    res3 = requests.get(url, headers=headers2)
    not_onion_json = res2.json()
    for i in range(25):
        post_t = []
        post_t.append(not_onion_json['data']['children'][i]['data']['title'])
        post_t.append(not_onion_json['data']['children'][i]['data']['subreddit'])
        posts_test.append(post_t)
    after = not_onion_json['data']['after']
    url = "https://www.reddit.com/r/nottheonion/.json?after=" + after

    time.sleep(3)


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-57-6c1cfdd42421> in <module>
      7     for i in range(25):
      8         post_t = []
----> 9         post_t.append(the_onion['data']['children'][i]['data']['title'])
     10         post_t.append(the_onion['data']['children'][i]['data']['subreddit'])
     11         posts_test.append(post_t)

IndexError: list index out of range"```

1 Ответ

1 голос
/ 04 апреля 2019

Причина, по которой вы останавливаетесь на 40, заключается в том, что вы говорите Python остановиться на 40

for i in range(40):

Хорошая новость в том, что вы собираете следующую страницу здесь

after = not_onion_json['data']['after']

Исходя из предположения, что как только вы дойдете до конца страниц after == null, я бы предложил выполнить цикл while. Что-то вроде

while after != None:

Это будет продолжаться, пока вы не дойдете до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...