2016-12-13 5 views
1

Я пытаюсь автоматизировать мой скрипт (в Python), чтобы автоматически получить end_cursor подряд. Например:Получить pagination автоматически instagram с Python

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

после:

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

после:

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

.... .... ....

И сделать так, до конца последнего end_cursor. Буду признателен, если вы поможете мне, так как я не мог. Еще раз спасибо.

PD: Я не делаю этого с API, из-за проблемы, что Sandbox не позволяет приложениям в разработке.

Update: End_cursor есть во всем, что загружается при входе в ссылку

+0

Я думаю, что более подробная информация о данных, возвращаемых указанными вами URL-адресами, будет полезна для ответа на этот вопрос. Откуда вы получаете «end_cursor»? Я не вижу, чтобы он упоминался вообще. Пожалуйста, обновите вопрос. –

+0

Если вы обнаружили, посмотрите: "{" tag ": {" media ": {" count ": 18924," page_info ": {" has_previous_page ": false," start_cursor ":" 1404546685791413124 "," end_cursor ": XXXXXXXXXXXXXXXXXXXX " – Kalek

+0

Согласился, что это легко получить, но лучше иметь вопрос немного более автономным. –

ответ

6

Так, https://www.instagram.com/explore/tags/plebiscito/?__a=1 возвращает кучу JSON, которая начинается от как

{"tag": {"media": {"count": 18926, "page_info": {"has_previous_page": false, "start_cursor": "1404693250132394506", "end_cursor": "J0HWFCHOgAAAF0HWE8dgwAAAFiYA", "has_next_page": true}, "nodes": [{"code": "BN-eRGQh8IK", "dimensions": {"width": 750, "height": 538}, "comments_disabled": false, "owner": {"id": "311016089"}, "comments": {"count": 1}, "caption": "#plebiscito", "likes": {"count": 11}, "date": 1481672506, "thumbnail_src": "https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c147.0.750.750/15338447_1774364399481982_8165079596765544448_n.jpg?... 

После разбора JSON, вы можете захватить end_cursor:

end_cursor = data['tag']['media']['page_info']['end_cursor'] 

, а затем получить следующий URL-адрес.

Я не мог дотянуться до конца списка за несколько секунд, сделав это вручную, поэтому я не знаю, что произойдет за последние end_cursor. Но я заметил ключ has_next_page. Возможно, что-то вроде этого:

data = json.loads(however_youre_getting_the_data('https://www.instagram.com/explore/tags/plebiscito/?__a=1')) 
end_cursors = [] 
while data['tag']['media']['page_info']['has_next_page']: 
    end_cursors.append(data['tag']['media']['page_info']['end_cursor']) 
    data = json.loads(however_youre_getting_the_data('https://www.instagram.com/explore/tags/plebiscito/?__a=1&max_id={}'.format(end_cursors[-1]))) 
+0

Если он заканчивается, обязательно отметьте его «правильным», как только Stack Overflow позволит вам. :) –

+0

Это работает, какая кнопка в том, чтобы забить? большое спасибо Скотту :)! – Kalek

+0

Был бы какой-нибудь способ сделать это, но без какого-либо времени или цикла? @Scott Colby – Kalek

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