2016-12-13 60 views
1

我想自动化我的脚本(在Python中)自动获取end_cursor连续。例如:自动获取分页与Python instagram

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不允许应用程序在开发中。

更新: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