国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何使用Python對Instagram進行數據分析?

開發 后端 數據分析
Instagram是最大的圖片分享社交媒體平臺,每月活躍用戶約五億,每日有九千五百萬的圖片和視頻被上傳到Instagram。其數據規模巨大,具有很大的潛能。本文將給出如何將Instagram作為數據源而非一個平臺,并介紹在項目中使用本文所給出的開發方法。

[[205045]]

我寫此文的目的在于展示以編程的方式使用Instagram的基本方法。我的方法可用于數據分析、計算機視覺以及任何你所能想到的酷炫項目中。

Instagram是最大的圖片分享社交媒體平臺,每月活躍用戶約五億,每日有九千五百萬的圖片和視頻被上傳到Instagram。其數據規模巨大,具有很大的潛能。本文將給出如何將Instagram作為數據源而非一個平臺,并介紹在項目中使用本文所給出的開發方法。

API和工具簡介

Instagram提供了官方API,但是這些API有些過時,并且當前所提供的功能也非常有限。因此在本文中,我使用了LevPasha提供的非Instagram官方API。該API支持所有關鍵特性,例如點贊、加粉、上傳圖片和視頻等。它使用Python編寫,本文中我只關注數據端的操作。

我推薦使用Jupyter Notebook和IPython。使用官方Python雖然沒有問題,但是它不提供圖片顯示等特性。

安裝

你可以使用pip安裝該軟件庫,命令如下:

  1. python -m pip install -e git+https://github.com/LevPasha/Instagram-API-python.git#egg=InstagramAPI 

如果系統中尚未安裝ffmpeg,那么在Linux上,可以使用如下命令安裝:

  1. sudo apt-get install ffmpeg 

對于Windows系統,需在Python解釋器中運行如下命令:

  1. import imageio 
  2.  
  3. imageio.plugins.ffmpeg.download()  

下面使用API,實現登入Instragram: 

  1. from InstagramAPI import InstagramAPI 
  2.  
  3. username="YOURUSERNAME" 
  4.  
  5. InstagramAPI = InstagramAPI(username, "YOURPASSWORD"
  6.  
  7. InstagramAPI.login()  

如果登錄成功,那么你會收到“登陸成功”的消息。

基本請求

做好上面的準備工作后,我們可以著手實現首次請求:

  1. InstagramAPI.getProfileData() 
  2.  
  3. result = InstagramAPI.LastJson  
  1. {u'status': u'ok'
  2.  u'user': {u'biography': u''
  3.   u'birthday': None, 
  4.   u'country_code': 20, 
  5.   u'email': aaa@hotmail.com', 
  6.   u'external_url': u''
  7.   u'full_name': u'Nour Galaby'
  8.   u'gender': 1, 
  9.   u'has_anonymous_profile_picture'False
  10.   u'hd_profile_pic_url_info': {u'height': 1080, 
  11.    u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-1aaa7448121591_1aa.jpg'
  12.    u'width': 1080}, 
  13.   u'hd_profile_pic_versions': [{u'height': 320, 
  14.     u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s320x320/19aa23237_4337448121591_195310aaa32_a.jpg'
  15.     u'width': 320}, 
  16.    {u'height': 640, 
  17.     u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s640x640/19623237_45581744812153_44_a.jpg'
  18.     u'width': 640}], 
  19.   u'is_private'True
  20.   u'is_verified'False
  21.   u'national_number': 122, 
  22.   u'phone_number': u'+201220'
  23.   u'pk': 22412229, 
  24.   u'profile_pic_id': u'1550239680720880455_22'
  25.   u'profile_pic_url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s150x150/19623237_455817448121591_195310166162_a.jpg'
  26.   u'show_conversion_edit_entry'False
  27.   u'username': u'nourgalaby'}}  

如上所示,結果是以JSON格式給出的,其中包括了所有請求的數據。

你可以使用正常的鍵值方式訪問結果數據。例如:

 

你也可以使用工具(例如Notepad++)查看JSON數據,并一探究竟。

獲取并查看Instagram時間線

下面讓我們實現一些更有用的功能。我們將請求排在時間線最后的帖子,并在Jupyter Notebook中查看。

下面代碼實現獲取時間線:

  1. InstagramAPI.timelineFeed() 

類似于前面的請求實現,我們同樣使用LastJson()查看結果。查看結果JSON數據,我們可以看到其中包括一系列稱為“條目”的鍵值。列表中的每個元素保存了時間線上特定帖子的信息,其中包括如下元素:

  • [text]:保存了標題下的帖子文本內容,包括hashtag。
  • [likes]:帖子中的點贊數。
  • [created_at]:帖子創建時間。
  • [comments]:帖子的評論。
  • [image_versions]:保存有指向實際JPG文件的鏈接,可使用該鏈接在Jupyter Notebook中顯示圖片。

函數

函數Get_posts_from_list()和Get_url()在帖子列表上循環,查找每個帖子中的URL,并附加到我們的空列表中。

上述函數完成后,我們將得到一個URL列表,如下所示:

 

我們可以使用IPython.display模塊查看圖片,代碼如下:

 

 

在IPython Notebook中查看圖片是十分有用的功能,我們之后還會使用這些函數去查看結果,敬請繼續。

獲取最受歡迎的帖子

現在我們已經知道了如何發出基本請求,但是如何實現更復雜的請求呢?下面我們要做一些類似的事情,即如何獲取我們的帖子中最受歡迎的。要實現這個目的,首先需要獲取當前登錄用戶的所有帖子,然后將帖子按點贊數排序。

獲取用戶的所有帖子

要獲取所有帖子,我們將使用next_max_id和more_avialable值在結果列表上執行循環。

  1. import time 
  2. myposts=[] 
  3. has_more_posts = True 
  4. max_id="" 
  5.  
  6. while has_more_posts: 
  7.     InstagramAPI.getSelfUserFeed(maxid=max_id) 
  8.     if InstagramAPI.LastJson['more_available'is not True
  9.         has_more_posts = False #stop condition 
  10.         print "stopped" 
  11.  
  12.     max_id = InstagramAPI.LastJson.get('next_max_id',''
  13.     myposts.extend(InstagramAPI.LastJson['items']) #merge lists 
  14.     time.sleep(2) # Slows the script down to avoid flooding the servers  
  15.  
  16. print len(myposts)  

保存和加載數據到磁盤

因為上面的請求可能需要很長的時間才能完成,我們并不想在沒有必要時運行它,因此好的做法是將結果保存起來,并在繼續工作時再次加載。為此,我們將使用Pickle。Pickle可以將任何變量序列化并保存到文件中,進而加載它們。下面給出一個工作例子:

保存:

  1. import pickle 
  2. filename=username+"_posts" 
  3. pickle.dump(myposts,open(filename,"wb"))  

加載:

  1. import pickle 
  2.  
  3. filename="nourgalaby_posts" 
  4.  
  5. myposts=pickle.load(file=open(filename))  

按點贊數排序

現在我們得到了一個名稱為“myposts”的有序字典。要實現根據字典中的某個鍵值排序,我們可以使用Lambda表達式,代碼如下:

  1. myposts_sorted = sorted(myposts, key=lambda k: 
  2.  
  3. k['like_count'],reverse=True
  4.  
  5. top_posts=myposts_sorted[:10] 
  6.  
  7. bottom_posts=myposts_sorted[-10:]  

如下代碼可以實現和上面一樣的顯示:

  1. image_urls=get_images_from_list(top_posts) 
  2.  
  3. display_images_from_url(image_urls)  

過濾圖片

我們可能想要對我們的帖子做一些過濾。例如,可能有的帖子中是視頻,但是我們只想要圖片帖子。我們可以這樣做過濾:

  1. myposts_photos= filter(lambda k: k['media_type']==1, myposts) 
  2. myposts_vids= filter(lambda k: k['media_type']==2, myposts) 
  3. print len(myposts) 
  4. print len(myposts_photos) 
  5. print len(myposts_vids)  

當然,你可以對結果中的任何變量做過濾,發揮你的創造力吧!

通知

  1. InstagramAPI.getRecentActivity() 
  2. get_recent_activity_response= InstagramAPI.LastJson  
  3. for notifcation in get_recent_activity_response['old_stories']: 
  4.     print notifcation['args']['text' 

結果可能是:

  1. userohamed3 liked your post. 
  2. userhacker32 liked your post. 
  3. user22 liked your post. 
  4. userz77 liked your post. 
  5. userwww77 started following you. 
  6. user2222 liked your post. 
  7. user23553 liked your post.  

僅來自特定用戶的通知

現在,我們可以按我們的要求操作并玩轉通知。例如,我可以獲得來自于特定用戶的通知列表:

  1. username="diana" 
  2. for notifcation in get_recent_activity_response['old_stories']: 
  3.     text = notifcation['args']['text'
  4.     if username  in text: 
  5.         print text  

讓我們嘗試一些更有意思的操作,例如:得到你被點贊最多的時刻,一天中何時人們點贊最多。要實現這些操作,我們將繪制一個關系圖,顯示一天中的時刻和你所收到點贊數的關系。

下面的代碼繪制了通知的時間日期:

  1. import pandas as pd 
  2. df = pd.DataFrame({"date":dates}) 
  3. df.groupby(df["date"].dt.hour).count().plot(kind="bar",title="Hour" ) 

 

 

正如在此例中所看到的,我在下午六點到十點間得到的點贊最多。如果你了解社交媒體,你就會知道這是高峰使用時間,大多數企業選取此時間段發帖以獲得最大的認可度。

獲取粉絲和被粉列表

下面我將獲取粉絲和跟帖列表,并在列表上執行一些操作。

要使用getUserFollowings和getUserFollowers這兩個函數,你首先需要取得user_id。下面給出了一種獲取user_id的方式:

 

現在你可以如下調用函數。注意,如果粉絲數量非常大,你需要做多次請求(下文將詳細介紹)。現在我們做了一次請求去獲取粉絲和被粉列表。JSON結果中給出了用戶列表,其中包含每個粉絲和被粉者的信息。

  1. InstagramAPI.getUserFollowings(user_id) 
  2.  
  3. print len(InstagramAPI.LastJson['users']) 
  4.  
  5. following_list=InstagramAPI.LastJson['users'
  6.  
  7. InstagramAPI.getUserFollowers(user_id) 
  8.  
  9. print len(InstagramAPI.LastJson['users']) 
  10.  
  11. followers_list=InstagramAPI.LastJson['users' 

如果粉絲數量很大,那么給出的結果可能并非完整列表。

獲得所有的粉絲

獲得所有粉絲列表類似于獲得所有帖子。我們將發出一個請求,然后對結果使用next_max_id鍵值做迭代處理。

在此感謝Francesc Garcia所提供的支持。

  1. import time 
  2.  
  3. followers   = [] 
  4. next_max_id = True 
  5. while next_max_id: 
  6.     print next_max_id 
  7.     #first iteration hack 
  8.     if next_max_id == True: next_max_id='' 
  9.     _ = InstagramAPI.getUserFollowers(user_id,maxid=next_max_id) 
  10.     followers.extend ( InstagramAPI.LastJson.get('users',[])) 
  11.     next_max_id = InstagramAPI.LastJson.get('next_max_id',''
  12.     time.sleep(1)  
  13.  
  14. followers_list=followers  

對于被粉列表也可以同樣做,但是我并不會這樣做,因為就我而言,一次請求就足以獲取我的所有被粉者。

現在我們得到了JSON格式的所有粉絲和被粉者的列表數據。我將轉化該列表為一種對用戶更友好的數據類型,即集合,以方便在數據上做一系列的操作。

我只取其中的“username”鍵值,并在其上使用set()。

  1. user_list = map(lambda x: x['username'] , following_list) 
  2. following_set= set(user_list) 
  3. print len(following_set) 
  4.  
  5. user_list = map(lambda x: x['username'] , followers_list) 
  6. followers_set= set(user_list) 
  7. print len(followers_set)  

這里我選取了所有用戶名的集合。對“full_name”也可同樣操作,并且結果更為用戶友好。但是結果可能并非唯一,因為一些用戶可能沒有提供全名。

現在我們得到了兩個集合。我們可以做如下操作:

 

這里我給出了粉絲的一些統計數字。你可以做很多事情,例如保存粉絲列表并稍后做對比,以了解掉粉的情況。

上面我們給出了可對Instagram數據進行的操作。我希望你已經學會了如何使用Instagram API,并具備了一些使用這些API可以做哪些事情的基本想法。敬請關注一下官方API,它們依然在開發中,未來你可以使用它們做更多的事情。如有任何疑問或建議,歡迎聯系我。 

責任編輯:龐桂玉 來源: 36大數據
相關推薦

2019-01-15 14:21:13

Python數據分析數據

2022-06-09 11:47:21

工具數據儀連接器

2024-07-26 21:36:43

2017-04-26 14:02:18

大數據數據分析Excel

2022-11-02 14:45:24

Python數據分析工具

2020-06-05 14:29:07

PythonPandas數據分析

2024-10-18 09:16:45

2017-03-07 10:37:05

非數據數據分析

2009-12-23 17:50:38

ADO.NET Fra

2021-12-28 11:23:36

SQLServerExcel數據分析

2015-04-21 14:21:07

大數據數據分析

2020-07-04 11:05:35

DaskPython數據分析

2012-03-21 09:31:51

ibmdw

2024-07-01 13:51:14

2015-09-23 09:24:56

spark數據分析

2019-12-19 15:56:10

Python數據工具

2020-02-20 10:45:51

Python數據疾病

2016-08-21 15:02:47

APP推廣數據分析數據統計工具

2018-08-30 17:50:30

圖像數據分析通道

2022-06-24 09:58:35

大數據JavaPython
點贊
收藏

51CTO技術棧公眾號

伊人性伊人情综合网| 黄页免费观看| 伊人成年综合电影网| 97视频在线免费观看| 超碰在线网址| 亚洲国产成人av在线| 飘雪影视在线观看免费观看| 在线欧美一区| 久久精品日韩精品| 久久久久久久久久久久电影| 欧美精品第1页| 国产卡一卡二在线| 丝袜美腿一区二区三区| 高清在线观看av| 国产精品灌醉下药二区| 黄色小视频在线播放| 欧美日韩黄色影视| 手机视频在线观看| 亚洲一区二区三区小说| fc2在线中文字幕| 日韩一区二区三区免费观看| 久久久久伊人| 9.1国产丝袜在线观看 | 国产一区日韩欧美| 精品国产免费久久久久久尖叫| 日韩精品乱码av一区二区| 亚洲摸下面视频| 日韩大片b站免费观看直播| 久久综合狠狠综合| 草草视频在线免费观看| 日韩电影在线免费看| 亚洲一区二三| 欧美电影影音先锋| 国产亚洲成av人片在线观黄桃| 亚洲精品一区二区三区在线观看| 一本色道久久综合亚洲精品酒店| 亚洲xxx自由成熟| 精品国内二区三区| 精品麻豆一区二区三区| a级黄色片网站| 中文一区二区完整视频在线观看| 午夜免费一区二区| 国产成人av一区二区三区在线观看| 日韩免费在线电影| 狠狠噜噜久久| 91网站免费观看| 无码国模国产在线观看| 欧美tickling网站挠脚心| 午夜视频在线免费观看| 欧美蜜桃一区二区三区| 色鬼7777久久| 色哟哟欧美精品| 日韩美女一级视频| 亚洲午夜一区二区| 岛国在线视频免费看| 狠狠躁夜夜躁久久躁别揉| 在线最新版中文在线| 国产亚洲精品久久久久久| 中文字幕在线高清| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产91露脸合集magnet| 国产富婆一区二区三区| 久久国产精品99国产| av电影免费在线观看| 美女在线观看视频一区二区| 中文字幕在线乱| 国产91对白在线播放| 欧美激情aⅴ一区二区三区| 91精品国产网站| 国产视频欧美| 国产超级av在线| 国模 一区 二区 三区| 国内免费久久久久久久久久久| 国产精品大片免费观看| 福利在线一区二区三区| 国产一区二区三区直播精品电影| 三级欧美在线一区| 色婷婷av在线| 日本一区二区三区免费看| 激情综合久久| 亚洲电影一级黄| 久久综合色播| 国产麻豆成人传媒免费观看| 一级一片免费播放| 亚洲一区二区三区不卡国产欧美| 亚洲精品国产setv| 国产精品igao| 精品一区二区三区四区| 久久综合五月婷婷| 青青草久久网络| 色婷婷亚洲婷婷| 精品视频成人| 欧美日韩精品不卡| 黑人巨大精品欧美黑白配亚洲| av久久网站| 在线观看成人免费| 亚洲国产日韩一区二区| a级片免费在线观看| 欧美人交a欧美精品| 亚洲高清成人| 中文字幕在线影视资源| 这里只有精品99re| 欧亚精品一区| 精品无码国产一区二区三区av| 色哟哟日韩精品| 久久av免费看| 成年人在线观看视频免费| 日韩精品久久久久久久玫瑰园| 全球最大av网站久久| www.九色.com| 最近2019中文字幕一页二页 | 日本成人a视频| 欧美一级夜夜爽| 精品二区视频| 三级网站在线| 国产精品视频一区国模私拍| 国产.欧美.日韩| 久久久久久国产精品久久| 国外av在线| 欧美三级情趣内衣| 午夜精品在线视频| 黑人狂躁日本妞一区二区三区| av最新在线| 黄色一级片国产| 日韩欧美激情一区二区| 精品91自产拍在线观看一区| 久久在线观看| 警花av一区二区三区| 神马午夜伦理不卡 | 欧美一区二区三区在线免费观看| 精品国产乱码久久久久久88av| 国产精品老牛影院在线观看| 亚洲图片欧美激情| 日韩国产在线观看| 亚洲图片在区色| 99精品国产热久久91蜜凸| 国产香蕉视频在线看| 欧美在线免费视频| 久久综合九色综合97婷婷| 国产精品自在| 日本搞黄视频| 国产伦精品一区二区三区| 欧美日韩日本视频| 亚洲午夜久久久久久久久电影网| 欧美午夜影院一区| 91婷婷韩国欧美一区二区| 欧美日韩中文一区二区| 巨骚激情综合| 国产成人三级视频| 成人久久一区二区三区| 精品国产91洋老外米糕| 国产色产综合色产在线视频| 91蜜臀精品国产自偷在线| 1区2区3区在线| 你懂的视频在线免费| 能在线观看的av| 亚洲精品中文字幕在线| 国产精品久久999| 欧美成人第一页| 日韩中文字幕精品| 老司机aⅴ在线精品导航| 日本一二区视频| 欧美爱爱视频网站| 69影院欧美专区视频| 欧美日韩中文字幕| 超碰成人久久| 深夜福利视频在线观看| 日本中文不卡| 国产日韩精品一区观看| 国产盗摄xxxx视频xxx69| 神马国产精品影院av| 日韩午夜三级在线| 色悠悠久久综合| 26uuu另类欧美| 国内外成人在线视频| 国产欧美精品国产国产专区| 一本色道a无线码一区v| 九九九热精品免费视频观看网站| 久久国产精品偷| 日韩视频在线免费| 亚州精品天堂中文字幕| 久久艳片www.17c.com | 欧美78videosex性欧美| 精东影业在线观看| 四虎在线观看| 日本高清中文字幕在线| 亚洲大胆精品| 日韩在线资源| 色偷偷色偷偷色偷偷在线视频| 欧美扣逼视频| 可以在线观看的av| 无遮挡动作视频在线观看免费入口| 九色视频网站| 国产视频二区在线观看| 1区2区3区在线视频| 国产黄色激情视频| 欧美一三区三区四区免费在线看 | 97精品视频在线观看| 欧美自拍视频在线观看| 日韩欧美一区二区视频|