Почему CURL не работает на таких страницах, как Facebook?

Я пытаюсь узнать, как создать сканер группы facebook, который получает информацию из группы (список сообщений из группы с информацией о том, кто написал сообщение, идентификатор публикации, дату публикации и т. Д.).

Для меня важно заявить, что я в начале своего исследования сканирования страниц!

Нашел хороший урок с этой страницы:
http://www.oooff.com/php-scripts/basic-curl-scraping-php/basic-scraping-with-curl.php

При запуске этого кода:

<?php
$url = "http://www.oooff.com/";

$ch = curl_init($url);                              // initialize the CURL library in my PHP script so we can later work on it - inside the handler.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     // curl_setopt() function is used to set options on the $ch handler.// in this case we use the CURLOPT_RETURNTRANSFER option
$curl_scraped_page = curl_exec($ch);                //  "run all the stuff we've set" - return the data scraped to the variable $curl_scraped_page
curl_close($ch);echo $curl_scraped_page;
?>

Это работает, но иногда, когда я запускаю его, я получаю пустую страницу.
когда я запускаю его на фейсбуке (или, точнее, в группе FB, потому что это то, что мне нужно), я получаю пустую страницу. Я попытался запустить его на yahoo.com, и я получил тот же результат.

  • Почему это происходит?
  • Как правильно получить содержимое страницы?

1

Решение

Если вас в основном интересует контент Facebook, вы можете использовать API-интерфейс facebook для php:
https://developers.facebook.com/docs/reference/php/

CURL загружает только содержимое файла, но не запускает JavaScript веб-страницы.

В соответствии с Вивин Палиат ответ PhantomJs может быть хорошим решением для получения контента с веб-страницы JavaScript:

[…] PhantomJS — безголовый браузер WebKit. У него есть собственный API, который позволяет вам «скриптовать» поведение. Таким образом, вы можете сказать PhantomJS загрузить страницу и выгрузить нужные вам данные.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]