2016-12-14 31 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

然而,我的缺點就是使每一個網址讓我什麼,我需要(這是人們的評論和用戶名)。 因此,腳本的作品,它不會做我所需要的。

「obtain_max_id」函數工作,得到以下end_cursors,但我不知道如何去適應它。 我感謝您的幫助!

總之,我需要調整我的「connect_main」函數中的「obtain_max_id」函數來提取我需要的每個URL的信息。

+0

你的問題還不清楚。你在找什麼呢? – Quirk

+0

如何完成整個過程,但對於每個URL,當完成提取數據時,請使用以下URL(https://www.instagram.com/explore/tags/plebiscito/?__a=1&max_id=end_cursor) ...步驟如下: URL - 抽取數據 下一個網址... URL - 抽取數據 ....連續 @Quirk – Thedark

+0

我更新了我的問題,請查看它。 @Quirk – Thedark

回答

0

你把所有你在data變量要(以JSON格式)的數據,在執行行之後:

data = json.loads(finish.text) 

while循環您obtain_max_id()方法內。只要使用它。

connect_main()方法的else塊內假定一切正常,你可以簡單地使用上述while循環內的代碼,你有你的data變量的所有數據之後。

+0

但問題是,「obtain_max_id」函數依次提取遊標,我需要爲我所說的一個接一個地執行,我需要使用JSON爲每個數據提取數據URLs @Quirk – Thedark

+0

當你爲'end_cursor []'追加一個值並在下一次迭代時使用*那個*值來獲取一個新頁面並將其加載到'data'中時,你已經*這樣做了。當你從一個空的'end_cursor []'列表開始,並在你訪問的每一頁上添加一個光標時,當循環結束時,你將訪問所有對應於光標的頁面。 – Quirk

+0

我明白了,但是當提取註釋和用戶名時應該用另一個While(while count <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']是None – sandes