ÎÒд´ËÎĵÄÄ¿µÄÔÚÓÚչʾÒÔ±à³ÌµÄ·½Ê½Ê¹ÓÃ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£¬ËüÃÇÒÀÈ»ÔÚ¿ª·¢ÖУ¬Î´À´Äã¿ÉÒÔʹÓÃËüÃÇ×ö¸ü¶àµÄÊÂÇé¡£ÈçÓÐÈκÎÒÉÎÊ»ò½¨Ò飬»¶ÓÁªÏµÎÒ¡£
|