Парсер с Instagram на php

Цена договорная • наличный расчёт
18 апреля 2017, 22:29 • 3 отклика • 53 просмотра
Задача следующая написать скрипт php:
раз в час заходить на определенную страницу инстаграмма
проверять появились ли новые посты (на основании сравнения с предыдущей проверкой)
для нового поста записывать линк (полный и /media/shortcode)
по КАЖДОМУ посту в эккаунте делать выгрузку юзеров кто поставил лайки.

Результат пишем в базу sql, в формате:
полная ссылка по пост|шорткод| юзер поставивший лайк | время постановки лайка*

*Время постановки лайка тут это время отработки скрипта

Инстаграмм ограничивает выгрузку как каждому посту 130 последними юзерами. Поэтому для каждого поста необходимо проводить проверку - кто из очередных 130 юзеров уже содержится в списки "лайкавших" данные пост и писать только новых.
Надо заложить в скрипт проверку на таймауты и перезапуск в нештатных ситуациях.

Экаунт публичный.
Токен - не сэндбокс - есть.

тряхнув стариной написал скрипт на питоне для данной задачи. Подставляю ACCESS_TOKEN и список всех shortcode для постов (не нашел способа выгружать через API все /media/shortcode из экаунта - ограничение последние 12) - получаю выгрузку в цсв. Единоразово решил и все выгрузил, но дальше уже нужна помощь.



from urllib.request import urlopen
ACCESS_TOKEN = 'xxxxxx'


def main():
media_tokens = [
'yyyyyyyyy',
]#list(map(lambda x:x.split('\"')[0],src.split('\"code\": \"')[1:]))
result = []
for m_token in media_tokens:
page_source = urlopen("https://www.instagram.com/p/"+m_token).read()
m_id = str(page_source).split('media?id')[1].split('\"')[0][1:]
result_source = (urlopen('https://api.instagram.com/v1/media/'+m_id+'/likes?access_token='+ACCESS_TOKEN).read())
result.append(("https://www.instagram.com/p/"+m_token,', '.join(list(map(lambda x: x.split('\"')[0],str(result_source).split("\"username\": \"")[1:]))) ))
ret = []
for url,lst in result:
ret = ret + [(url,x) for x in lst.split()]
file = open('./instagram_result41_50.csv','w')
file.writelines([x+','+y+'\n' for x,y in ret])
file.close()

if __name__ == "__main__":
main()
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Заказывал парсер и настройку сервера под него. Заказ выполнен качественно и в срок. На вопросы отвечает и поддержку после реализации оказывает.
Борис спасибо, буду обращаться еще.
7 лет назад