Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎʹÓÃPython¶ÔInstagram½øÐÐÊý¾Ý·ÖÎö£¿
 
À´Ô´£ºÍøÂç ·¢²¼ÓÚ:2017-10-9
  4140  次浏览      28
 

ÎÒд´ËÎĵÄÄ¿µÄÔÚÓÚչʾÒÔ±à³ÌµÄ·½Ê½Ê¹ÓÃInstagramµÄ»ù±¾·½·¨¡£Îҵķ½·¨¿ÉÓÃÓÚÊý¾Ý·ÖÎö¡¢¼ÆËã»úÊÓ¾õÒÔ¼°ÈκÎÄãËùÄÜÏëµ½µÄ¿áìÅÏîÄ¿ÖС£

InstagramÊÇ×î´óµÄͼƬ·ÖÏíÉ罻ýÌåÆ½Ì¨£¬Ã¿Ô»îÔ¾Óû§Ô¼ÎåÒÚ£¬Ã¿ÈÕÓоÅǧÎå°ÙÍòµÄͼƬºÍÊÓÆµ±»ÉÏ´«µ½Instagram¡£ÆäÊý¾Ý¹æÄ£¾Þ´ó£¬¾ßÓкܴóµÄDZÄÜ¡£±¾ÎĽ«¸ø³öÈçºÎ½«Instagram×÷ΪÊý¾ÝÔ´¶ø·ÇÒ»¸öƽ̨£¬²¢½éÉÜÔÚÏîÄ¿ÖÐʹÓñ¾ÎÄËù¸ø³öµÄ¿ª·¢·½·¨¡£

PIºÍ¹¤¾ß¼ò½é

InstagramÌṩÁ˹ٷ½API£¬µ«ÊÇÕâЩAPIÓÐЩ¹ýʱ£¬²¢ÇÒµ±Ç°ËùÌṩµÄ¹¦ÄÜÒ²·Ç³£ÓÐÏÞ¡£Òò´ËÔÚ±¾ÎÄÖУ¬ÎÒʹÓÃÁËLevPashaÌṩµÄ·ÇInstagram¹Ù·½API¡£¸ÃAPIÖ§³ÖËùÓйؼüÌØÐÔ£¬ÀýÈçµãÔÞ¡¢¼Ó·Û¡¢ÉÏ´«Í¼Æ¬ºÍÊÓÆµµÈ¡£ËüʹÓÃPython±àд£¬±¾ÎÄÖÐÎÒÖ»¹Ø×¢Êý¾Ý¶ËµÄ²Ù×÷¡£

ÎÒÍÆ¼öʹÓÃJupyter NotebookºÍIPython¡£Ê¹Óùٷ½PythonËäȻûÓÐÎÊÌ⣬µ«ÊÇËü²»ÌṩͼƬÏÔʾµÈÌØÐÔ¡£

°²×°

Äã¿ÉÒÔʹÓÃpip°²×°¸ÃÈí¼þ¿â£¬ÃüÁîÈçÏ£º

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

Èç¹ûϵͳÖÐÉÐδ°²×°ffmpeg£¬ÄÇôÔÚLinuxÉÏ£¬¿ÉÒÔʹÓÃÈçÏÂÃüÁî°²×°£º

sudo apt-get install ffmpeg

¶ÔÓÚWindowsϵͳ£¬ÐèÔÚPython½âÊÍÆ÷ÖÐÔËÐÐÈçÏÂÃüÁ

import imageio
imageio.plugins.ffmpeg.download()

ÏÂÃæÊ¹ÓÃAPI£¬ÊµÏÖµÇÈëInstragram£º

from InstagramAPI import InstagramAPI
username="YOURUSERNAME"
InstagramAPI = InstagramAPI(username, "YOURPASSWORD")
InstagramAPI.login()

Èç¹ûµÇ¼³É¹¦£¬ÄÇôÄã»áÊÕµ½¡°µÇ½³É¹¦¡±µÄÏûÏ¢¡£

»ù±¾ÇëÇó

×öºÃÉÏÃæµÄ×¼±¸¹¤×÷ºó£¬ÎÒÃÇ¿ÉÒÔ×ÅÊÖʵÏÖÊ×´ÎÇëÇó£º

InstagramAPI.getProfileData()
result = InstagramAPI.LastJson

{u'status': u'ok',
u'user': {u'biography': u'',
u'birthday': None,
u'country_code': 20,
u'email': aaa@hotmail.com',
u'external_url': u'',
u'full_name': u'Nour Galaby',
u'gender': 1,
u'has_anonymous_profile_picture': False,
u'hd_profile_pic_url_info': {u'height': 1080,
u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-1aaa7448121591_1aa.jpg',
u'width': 1080},
u'hd_profile_pic_versions': [{u'height': 320,
u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s320x320/19aa23237_4337448121591_195310aaa32_a.jpg',
u'width': 320},
{u'height': 640,
u'url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s640x640/19623237_45581744812153_44_a.jpg',
u'width': 640}],
u'is_private': True,
u'is_verified': False,
u'national_number': 122,
u'phone_number': u'+201220',
u'pk': 22412229,
u'profile_pic_id': u'1550239680720880455_22',
u'profile_pic_url': u'https://instagram.fcai2-1.fna.fbcdn.net/t51.2885-19/s150x150/19623237_455817448121591_195310166162_a.jpg',
u'show_conversion_edit_entry': False,
u'username': u'nourgalaby'}}

ÈçÉÏËùʾ£¬½á¹ûÊÇÒÔJSON¸ñʽ¸ø³öµÄ£¬ÆäÖаüÀ¨ÁËËùÓÐÇëÇóµÄÊý¾Ý¡£

Äã¿ÉÒÔʹÓÃÕý³£µÄ¼üÖµ·½Ê½·ÃÎʽá¹ûÊý¾Ý¡£ÀýÈ磺

ÄãÒ²¿ÉÒÔʹÓù¤¾ß£¨ÀýÈçNotepad++£©²é¿´JSONÊý¾Ý£¬²¢Ò»Ì½¾¿¾¹¡£

»ñÈ¡²¢²é¿´Instagramʱ¼äÏß

ÏÂÃæÈÃÎÒÃÇʵÏÖһЩ¸üÓÐÓõŦÄÜ¡£ÎÒÃǽ«ÇëÇóÅÅÔÚʱ¼äÏß×îºóµÄÌû×Ó£¬²¢ÔÚJupyter NotebookÖв鿴¡£

ÏÂÃæ´úÂëʵÏÖ»ñȡʱ¼äÏߣº

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ÖµÔÚ½á¹ûÁбíÉÏÖ´ÐÐÑ­»·¡£

import time
myposts=[]
has_more_posts = True
max_id=""

while has_more_posts:
InstagramAPI.getSelfUserFeed(maxid=max_id)
if InstagramAPI.LastJson['more_available'] is not True:
has_more_posts = False #stop condition
print "stopped"

max_id = InstagramAPI.LastJson.get('next_max_id','')
myposts.extend(InstagramAPI.LastJson['items']) #merge lists
time.sleep(2) # Slows the script down to avoid flooding the servers

print len(myposts)

±£´æºÍ¼ÓÔØÊý¾Ýµ½´ÅÅÌ

ÒòΪÉÏÃæµÄÇëÇó¿ÉÄÜÐèÒªºÜ³¤µÄʱ¼ä²ÅÄÜÍê³É£¬ÎÒÃDz¢²»ÏëÔÚûÓбØÒªÊ±ÔËÐÐËü£¬Òò´ËºÃµÄ×ö·¨Êǽ«½á¹û±£´æÆðÀ´£¬²¢ÔÚ¼ÌÐø¹¤×÷ʱÔٴμÓÔØ¡£Îª´Ë£¬ÎÒÃǽ«Ê¹ÓÃPickle¡£Pickle¿ÉÒÔ½«ÈκαäÁ¿ÐòÁл¯²¢±£´æµ½ÎļþÖУ¬½ø¶ø¼ÓÔØËüÃÇ¡£ÏÂÃæ¸ø³öÒ»¸ö¹¤×÷Àý×Ó£º

±£´æ£º

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

¼ÓÔØ£º

import pickle
filename="nourgalaby_posts"
myposts=pickle.load(file=open(filename))

°´µãÔÞÊýÅÅÐò

ÏÖÔÚÎÒÃǵõ½ÁËÒ»¸öÃû³ÆÎª¡°myposts¡±µÄÓÐÐò×ֵ䡣ҪʵÏÖ¸ù¾Ý×ÖµäÖеÄij¸ö¼üÖµÅÅÐò£¬ÎÒÃÇ¿ÉÒÔʹÓÃLambda±í´ïʽ£¬´úÂëÈçÏ£º

myposts_sorted = sorted(myposts, key=lambda k:
k['like_count'],reverse=True)
top_posts=myposts_sorted[:10]
bottom_posts=myposts_sorted[-10:]

ÈçÏ´úÂë¿ÉÒÔʵÏÖºÍÉÏÃæÒ»ÑùµÄÏÔʾ£º

image_urls=get_images_from_list(top_posts)
display_images_from_url(image_urls)

¹ýÂËͼƬ

ÎÒÃÇ¿ÉÄÜÏëÒª¶ÔÎÒÃǵÄÌû×Ó×öһЩ¹ýÂË¡£ÀýÈ磬¿ÉÄÜÓеÄÌû×ÓÖÐÊÇÊÓÆµ£¬µ«ÊÇÎÒÃÇÖ»ÏëҪͼƬÌû×Ó¡£ÎÒÃÇ¿ÉÒÔÕâÑù×ö¹ýÂË£º

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

µ±È»£¬Äã¿ÉÒÔ¶Ô½á¹ûÖеÄÈκαäÁ¿×ö¹ýÂË£¬·¢»ÓÄãµÄ´´ÔìÁ¦°É£¡

֪ͨ

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

½á¹û¿ÉÄÜÊÇ£º

userohamed3 liked your post.
userhacker32 liked your post.
user22 liked your post.
userz77 liked your post.
userwww77 started following you.
user2222 liked your post.
user23553 liked your post.

½öÀ´×ÔÌØ¶¨Óû§µÄ֪ͨ

ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔ°´ÎÒÃǵÄÒªÇó²Ù×÷²¢Íæ×ªÍ¨Öª¡£ÀýÈ磬ÎÒ¿ÉÒÔ»ñµÃÀ´×ÔÓÚÌØ¶¨Óû§µÄ֪ͨÁÐ±í£º

username="diana"
for notifcation in get_recent_activity_response['old_stories']:
text = notifcation['args']['text']
if username in text:
print text

ÈÃÎÒÃdz¢ÊÔһЩ¸üÓÐÒâ˼µÄ²Ù×÷£¬ÀýÈ磺µÃµ½Äã±»µãÔÞ×î¶àµÄʱ¿Ì£¬Ò»ÌìÖкÎʱÈËÃǵãÔÞ×î¶à¡£ÒªÊµÏÖÕâЩ²Ù×÷£¬ÎÒÃǽ«»æÖÆÒ»¸ö¹ØÏµÍ¼£¬ÏÔʾһÌìÖеÄʱ¿ÌºÍÄãËùÊÕµ½µãÔÞÊýµÄ¹ØÏµ¡£

ÏÂÃæµÄ´úÂë»æÖÆÁË֪ͨµÄʱ¼äÈÕÆÚ£º

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

ÕýÈçÔÚ´ËÀýÖÐËù¿´µ½µÄ£¬ÎÒÔÚÏÂÎçÁùµãµ½Ê®µã¼äµÃµ½µÄµãÔÞ×î¶à¡£Èç¹ûÄãÁ˽âÉ罻ýÌ壬Äã¾Í»áÖªµÀÕâÊǸ߷åʹÓÃʱ¼ä£¬´ó¶àÊýÆóҵѡȡ´Ëʱ¼ä¶Î·¢ÌûÒÔ»ñµÃ×î´óµÄÈϿɶȡ£

»ñÈ¡·ÛË¿ºÍ±»·ÛÁбí

ÏÂÃæÎÒ½«»ñÈ¡·ÛË¿ºÍ¸úÌûÁÐ±í£¬²¢ÔÚÁбíÉÏÖ´ÐÐһЩ²Ù×÷¡£

ҪʹÓÃgetUserFollowingsºÍgetUserFollowersÕâÁ½¸öº¯Êý£¬ÄãÊ×ÏÈÐèҪȡµÃuser_id¡£ÏÂÃæ¸ø³öÁËÒ»ÖÖ»ñÈ¡user_idµÄ·½Ê½£º

ÏÖÔÚÄã¿ÉÒÔÈçϵ÷Óú¯Êý¡£×¢Ò⣬Èç¹û·ÛË¿ÊýÁ¿·Ç³£´ó£¬ÄãÐèÒª×ö¶à´ÎÇëÇó£¨ÏÂÎĽ«Ïêϸ½éÉÜ£©¡£ÏÖÔÚÎÒÃÇ×öÁËÒ»´ÎÇëÇóÈ¥»ñÈ¡·ÛË¿ºÍ±»·ÛÁÐ±í¡£JSON½á¹ûÖиø³öÁËÓû§ÁÐ±í£¬ÆäÖаüº¬Ã¿¸ö·ÛË¿ºÍ±»·ÛÕßµÄÐÅÏ¢¡£

InstagramAPI.getUserFollowings(user_id)
print len(InstagramAPI.LastJson['users'])
following_list=InstagramAPI.LastJson['users']

InstagramAPI.getUserFollowers(user_id)
print len(InstagramAPI.LastJson['users'])
followers_list=InstagramAPI.LastJson['users']

Èç¹û·ÛË¿ÊýÁ¿ºÜ´ó£¬ÄÇô¸ø³öµÄ½á¹û¿ÉÄܲ¢·ÇÍêÕûÁÐ±í¡£

»ñµÃËùÓеķÛË¿

»ñµÃËùÓзÛË¿ÁбíÀàËÆÓÚ»ñµÃËùÓÐÌû×Ó¡£ÎÒÃǽ«·¢³öÒ»¸öÇëÇó£¬È»ºó¶Ô½á¹ûʹÓÃnext_max_id¼üÖµ×öµü´ú´¦Àí¡£

Ôڴ˸ÐлFrancesc GarciaËùÌṩµÄÖ§³Ö¡£

import time

followers = []
next_max_id = True
while next_max_id:
print next_max_id
#first iteration hack
if next_max_id == True: next_max_id=''
_ = InstagramAPI.getUserFollowers(user_id,maxid=next_max_id)
followers.extend ( InstagramAPI.LastJson.get('users',[]))
next_max_id = InstagramAPI.LastJson.get('next_max_id','')
time.sleep(1)

followers_list=followers

¶ÔÓÚ±»·ÛÁбíÒ²¿ÉÒÔͬÑù×ö£¬µ«ÊÇÎÒ²¢²»»áÕâÑù×ö£¬ÒòΪ¾ÍÎÒ¶øÑÔ£¬Ò»´ÎÇëÇó¾Í×ãÒÔ»ñÈ¡ÎÒµÄËùÓб»·ÛÕß¡£

ÏÖÔÚÎÒÃǵõ½ÁËJSON¸ñʽµÄËùÓзÛË¿ºÍ±»·ÛÕßµÄÁбíÊý¾Ý¡£ÎÒ½«×ª»¯¸ÃÁбíΪһÖÖ¶ÔÓû§¸üÓѺõÄÊý¾ÝÀàÐÍ£¬¼´¼¯ºÏ£¬ÒÔ·½±ãÔÚÊý¾ÝÉÏ×öһϵÁеIJÙ×÷¡£

ÎÒֻȡÆäÖеġ°username¡±¼üÖµ£¬²¢ÔÚÆäÉÏʹÓÃset()¡£

user_list = map(lambda x: x['username'] , following_list)
following_set= set(user_list)
print len(following_set)

user_list = map(lambda x: x['username'] , followers_list)
followers_set= set(user_list)
print len(followers_set)

ÕâÀïÎÒѡȡÁËËùÓÐÓû§ÃûµÄ¼¯ºÏ¡£¶Ô¡°full_name¡±Ò²¿ÉͬÑù²Ù×÷£¬²¢ÇÒ½á¹û¸üΪÓû§ÓѺᣵ«Êǽá¹û¿ÉÄܲ¢·ÇΨһ£¬ÒòΪһЩÓû§¿ÉÄÜûÓÐÌṩȫÃû¡£

ÏÖÔÚÎÒÃǵõ½ÁËÁ½¸ö¼¯ºÏ¡£ÎÒÃÇ¿ÉÒÔ×öÈçϲÙ×÷£º

ÕâÀïÎÒ¸ø³öÁË·ÛË¿µÄһЩͳ¼ÆÊý×Ö¡£Äã¿ÉÒÔ×öºÜ¶àÊÂÇ飬ÀýÈç±£´æ·ÛË¿ÁÐ±í²¢ÉÔºó×ö¶Ô±È£¬ÒÔÁ˽âµô·ÛµÄÇé¿ö¡£

ÉÏÃæÎÒÃǸø³öÁ˿ɶÔInstagramÊý¾Ý½øÐеIJÙ×÷¡£ÎÒÏ£ÍûÄãÒѾ­Ñ§»áÁËÈçºÎʹÓÃInstagram API£¬²¢¾ß±¸ÁËһЩʹÓÃÕâЩAPI¿ÉÒÔ×öÄÄЩÊÂÇéµÄ»ù±¾Ïë·¨¡£¾´Çë¹Ø×¢Ò»Ï¹ٷ½API£¬ËüÃÇÒÀÈ»ÔÚ¿ª·¢ÖУ¬Î´À´Äã¿ÉÒÔʹÓÃËüÃÇ×ö¸ü¶àµÄÊÂÇé¡£ÈçÓÐÈκÎÒÉÎÊ»ò½¨Ò飬»¶Ó­ÁªÏµÎÒ¡£

 

   
4140 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ