2016-12-14 1 views
2

Я делаю небольшой скрипт, где я хочу собрать все «код:» относительно тега.Как интегрировать этот скрипт с этой функцией в Python (Instagram)

Например:

https://www.instagram.com/explore/tags/%s/?__a=1 

Следующая следующая страница будет:

https://www.instagram.com/explore/tags/plebiscito/?__a=1&max_id=end_cursor

Однако мой недостаток заключается в том, чтобы сделать каждый URL получить меня, что я (которые являются комментариями и именем пользователя). Так как скрипт работает, он не делает то, что мне нужно.

Функция «get_max_id» работает, получая следующие end_cursors, но я не знаю, как ее адаптировать. Я ценю вашу помощь!

В заключение мне нужно настроить функцию «get_max_id» в моей функции «connect_main», чтобы извлечь нужную мне информацию с каждым из URL-адресов.

+0

Ваш вопрос непонятен. Что именно вы ищете именно? – Quirk

+0

Как выполнить весь процесс, но с каждым URL-адресом, когда вы закончите извлечение данных, сделайте то же самое со следующим URL-адресом (https://www.instagram.com/explore/tags/plebiscito/?__a=1&max_id=end_cursor) ... Эти шаги были бы как: URL - данные Извлечение Следующая URL ... URL - Извлечение данных .... Последовательно @Quirk – Thedark

+0

Я обновил свой вопрос, пожалуйста, проверьте его. @Quirk – Thedark

ответ

0

У вас есть все данные, которые вы хотите в вашей data переменной (в JSON форме), сразу после выполнения строки:

data = json.loads(finish.text) 

в петле while внутри метода obtain_max_id(). Просто используйте это.

Предполагая, что все внутри else блока вашего метода connect_main() работает, вы могли бы просто использовать этот код внутри выше while цикла, сразу после того, у вас есть все данные в вашей data переменного.

+0

Но вопрос в том, что функция «get_max_id» вытаскивает курсоры один за другим, и мне нужно сделать это один за другим для того, что я сказал, данных, которые мне нужно извлечь с помощью JSON для каждого из URL-адреса @Quirk – Thedark

+0

Вы уже * делаете это, когда добавляете значение к значению 'end_cursor []' и в следующей итерации используйте * это * значение для извлечения новой страницы и загрузки ее в 'data'. Когда вы начинаете с пустого списка «end_cursor []» и добавляете курсор на каждую посещаемую страницу, вы будете посещать все страницы, соответствующие курсорам, когда заканчивается ваш цикл. – Quirk

+0

Я понимаю, но при извлечении комментариев и имен пользователей нужно сделать еще одно (пока число <40 :) и останется в бесконечном цикле, поэтому оно не будет продолжаться с другими end_cursors и останется в Первом. Моя идея состояла в том, чтобы пытаться это сделать каждый раз, когда я запускал end_cursor, он остается statitc, я извлекаю данные, а затем делаю запрос к последнему end_cursor, который остался, поэтому я бегу не с циклом, а в порядке для продвижения сценария. @Quirk – Thedark

1

Это просто.

import requests 
import json 

host = "https://www.instagram.com/explore/tags/plebiscito/?__a=1" 

r = requests.get(host).json() 

for x in r['tag']['media']['nodes']: 
    print (x['code']) 

next = r['tag']['media']['page_info']['end_cursor'] 

while next: 
    r = requests.get(host + "&max_id=" + next).json() 
    for x in r['tag']['media']['nodes']: 
     print (x['code']) 

    next = r['tag']['media']['page_info']['end_cursor'] 
+0

Ваш max_id есть, когда r ['tag'] ['media'] ['page_info'] ['end_cursor'] is None – sandes

Смежные вопросы