Парсер с Instagram на php
Цена договорная
•
наличный расчёт
Задача следующая написать скрипт 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()
раз в час заходить на определенную страницу инстаграмма
проверять появились ли новые посты (на основании сравнения с предыдущей проверкой)
для нового поста записывать линк (полный и /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()
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Борис спасибо, буду обращаться еще.