2015-01-10 5 views
0

Так что это довольно простой вопрос, мне просто интересно, кто-нибудь знает, как я смогу это сделать, желательно используя только java/по крайней мере код, который может быть выполнен из Java-программы?Java: Extracting Instagram нравится?

В настоящее время я использую следующий метод, в котором веб-страница загружается с сервера:

 URL url = new URL(u); 
     URLConnection uc = url.openConnection(); 
     uc.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); 
     InputStream inputStream = uc.getInputStream(); 

     FileOutputStream outputStream = new FileOutputStream("currentImagePage.html"); 

     int bytesRead = -1; 
     int BUFFER_SIZE = 4096; 

     byte[] buffer = new byte[BUFFER_SIZE]; 
     while ((bytesRead = inputStream.read(buffer)) != -1) { 
      outputStream.write(buffer, 0, bytesRead); 
     } 

     outputStream.close(); 
     inputStream.close(); 

И полученный HTML документ возвращаемые можно увидеть здесь: http://pastebin.com/262h22PQ

Если вы посмотрите на линии 110, это единственная реальная вещь, которую я вижу в процентах:

<script type="text/javascript"> 
    window._strings = { 
    //other random crap 
    "%(count)s people liked this photo": "%(count)s people liked this photo", 

Но все равно я бы b Можно ли получить доступ к переменной count? Если есть, то я был бы признателен всем, кто мог бы указать мне на правильном пути


Я на самом деле есть метод, который работает, однако, что предполагает загрузку веб-страницы, используя WebDriver селена, а затем вызов .getPageSource (). Это будет возвращать следующий исходный код страницы:

http://pastebin.com/ZZtNiWPw

Как говорит Instagram «[пользователь х], [пользователь у], [пользователь г] & [число других] это понравилось», вы можете извлечь что из строки и получить следующую строку:

<span data-reactid=".0.0.1.0.0.0.0.0.0.1.0.0.0:1.$tx7:0" class="llRemainingCount">3,511</span> 

Там одна проблема с этим методом, хотя ... загружая в потенциально тысячи страниц изображений только для извлечения числа подобных очень медленно.


Так что я думаю, на самом деле, что я спрашиваю, 1) я могу получить первый метод возвращает тот же исходный код страницы как метод двух или 2) есть в любом случае я могу получить доступ к% (количество) переменных в метод 1? Или, если у кого-то есть лучшее решение, я был бы очень благодарен :)

Cheers!

ответ

1

Вы идете сложным способом.

Большинство крупных сайтов предоставляют вам довольно хороший API, который можно вызывать на Java. Некоторые даже библиотеки доставки, посвященные этим API,

Instagram API: http://instagram.com/developer/

Instagram оленья кожа поставить Java библиотеки Тхо. Но Java предоставляет API для RESTful Web Services под названием JAX-RS. Я не эксперт по этому вопросу, но с некоторыми прибегая к помощи вы можете найти более


EDIT: добавлен более подробную информацию о необходимости проверки подлинности для получения «любит»

Отрывок из http://instagram.com/developer/authentication/

ли вам нужно пройти аутентификацию?

По большей части API Instagram требует использования client_id. Client_id просто связывает ваш сервер, скрипт или программу с конкретным приложением. Однако для некоторых запросов требуется аутентификация - в частности, запросы, сделанные от имени пользователя.

TL; DR нет, вы не должны проверять подлинность для доступа к любит по средствам массовой информации ... Оно не очень хорошо документированы на Тхо сайте ... Я просто проверял в console, чтобы увидеть, что я получаю назад.

На "пользователи/Я/СМИ/понравилось" я получил: "error_message": "Missing access_token URL parameter."

Но на "СМИ/{MediaId}/нравится" я получил это: "error_message": "Missing client_id or access_token URL parameter."

Некоторые чтения и пустячный вокруг всегда решает проблемы: P

+0

Я действительно смотрел API, но из того, что я мог бы сделать из этого, у меня появилось ощущение, что вы должны войти в систему, чтобы сделать многое из этого. Возможно, я ошибаюсь, но если вам нужно войти в систему, это просто лишняя проблема, которую большинство пользователей не захотят делать ... –

+0

Не знаете, если она сообщит вам, если я отредактирую свой пост, но мне нужно было форматирование ^^ – NooBxGockeL

+0

@SteveM, вам не нужно регистрироваться, чтобы получить доступ к общедоступным –

Смежные вопросы