Получить элемент на странице facebook, используя php & curl - PullRequest
0 голосов
/ 20 апреля 2011

Я пытался получить html-элемент со страницы общедоступного события в facebook в файле с именем proxy.php:

<?php
  header('Content-Type: text/html');
  $ch = curl_init('http://www.facebook.com/pages/Revive/137584936302228?sk=events');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  echo curl_exec($ch);
?>

И используя этот ajax для получения содержимого:

$.ajax({
  url: '/wp-content/themes/revive/proxy.php',
  type: 'GET',
  dataType: 'html',
  success: function(data, textStatus, xhr) {
    events = $('div#pagelet_events', data).html();
    // events = $('#text-5', data).html();
    $('#events-section').append(events);
  },
});

Но по какой-то причине это не сработало.Как я могу заставить это работать?

Спасибо!


Обновление: Так что я подобрался ближе, но, глядя на код, что proxy.php этоне просто div # pagelet_events, который загружается на страницу.Не уверен, имеет ли это смысл.Единственное, что я могу найти, ссылаясь на pagelet_events, это:

<script>big_pipe.onPageletArrive({"phase":3,"id":"pagelet_events","is_last":true,"css":["AJXaB","3cT\/s"],"resource_map":{"AJXaB":{"type":"css","src":"http:\/\/f.static.ak.fbcdn.net\/rsrc.php\/v1\/yO\/r\/qjFDIQwXiny.css"}},"content":{"pagelet_events":"\u003cdiv class=\"UIImageBlock clearfix fbxNullState\">\u003cimg class=\"UIImageBlock_Image UIImageBlock_SMALL_Image img\" src=\"http:\/\/c.static.ak.fbcdn.net\/rsrc.php\/v1\/y9\/r\/56JC9tUWl0q.png\" alt=\"\" width=\"32\" height=\"32\" \/>\u003cdiv class=\"UIImageBlock_Content UIImageBlock_SMALL_Content\">\u003cp>You have no upcoming events.\u003c\/p>\u003c\/div>\u003c\/div>"},"tti_phase":3});</script>   

Есть ли у меня идеи, если я смогу извлечь контент, который генерирует этот скрипт?

1 Ответ

3 голосов
/ 20 апреля 2011

Я думаю, что Facebook блокирует любой запрос, если он приходит (или выглядит так, как будто он поступает) от скрипта / бота.Вам нужно добавить строку user-agent, чтобы это выглядело как настоящий запрос.

Я изменил ваш прокси-скрипт к этому, и он работает (возвращает результат).

<?php
  header('Content-Type: text/html');
  $ch = curl_init('http://www.facebook.com/pages/Revive/137584936302228?sk=events');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
  echo curl_exec($ch);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...