В прошлой статье мы написали с вами парсер для сбора фоток, адуитории и хештегов по определенному хештегу.
А теперь мы немного видоизменим наш скрипт, что бы собрать информацию по конкретному месту (location). Я правда не знаю есть ли алгоритм по которому инстаграм присваивает метки, этот момент я так глубоко не изучал и не анализировал.
Конечно для начала вам нужно будет выяснить сам location, это в принципе можно сделать через тот-же поиск, в нашем случае сделаем локацию Самара.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #!/usr/bin/env python # -*- coding: utf8 -*- import json, urllib, urllib2, os.path import codecs import time DIR = os.path.abspath(os.curdir) + '/' tag = '213094418' def get(url, timeout=10): try: return urllib2.urlopen(url, timeout=timeout).read() except: return 0 def get_max_id(jsonres): try: jres = jsonres['location']['media']['page_info']['end_cursor'] return jres except: return 0 def have_next_page(jsonres): try: jres = jsonres['location']['media']['page_info']['has_next_page'] if jres == True: return 1 else: return 0 except: return 0 def get_media_info(noderow): m = [] for x in noderow: code = x['code'] owner= x['owner'] mydate = x['date'] try: caption = x['caption'] except: caption = 'none' m.append([str(code),str(owner),str(mydate),caption]) return m def main(tag): f = codecs.open('instagram_by_' + tag + '_data.txt','w', 'utf-8') main_url = 'https://www.instagram.com/explore/locations/' + tag + '/?__a=1' page = 1 res = json.loads(get(main_url)) max_id = None while page == 1: for i in get_media_info(res['location']['media']['nodes']): caption = i[3] print i[0] mycaption2 = caption.replace('\n','') f.write(str(i[0]) + ',' + str(i[1])+ ','+ str(i[2])+ ','+ mycaption2+'\n') page = have_next_page(res) time.sleep(3) if page == 1: print 'next page' max_id = get_max_id(res) main_url = 'https://www.instagram.com/explore/locations/' + tag + '/?__a=1' + '&max_id=' + str(max_id) res = json.loads(get(main_url)) print 'DONE!' if __name__ == '__main__': main(tag) |
Ну вот собственно этот скрипт собирает данные уже по локации
Я не специалист по языкам программирования и код наверное
далек от идеала, но он работает и свою функцию в принципе
выполняет.
Если у вас есть вопросы, замечания или предложения
можно писать в коменты
Комментариев нет:
Отправить комментарий