Проблема с очисткой данных - PullRequest
0 голосов
/ 29 августа 2010

Я собираю данные со страницы Facebook для сообщений на стене, вот URL:

http://www.facebook.com/GMHTheBook?v=wall&ref=ts#!/GMHTheBook?v=wall&ref=ts

Я успешно удалил все видимые сообщения на стене, используя CURL.

Проблема:

В конце видимых сообщений на стене есть ссылка Старые сообщения , которая показывает больше сообщений на стене после нажатия на эту ссылку.Как мне вручную щелкнуть по этой ссылке, чтобы показать больше постов на стене и удалить эти сообщения?

Есть ли какое-либо решение, использующее какой-либо метод для этого?Я использую CURL, но надеюсь, что есть какое-то решение для такой ситуации?

Обновление:

Теперь я использую этот код для получения всех данных, найдите следующую ссылкуи получить данные для этого URL-адреса и т. д., вот код:

ini_set('display_errors', true);
error_reporting(E_ALL);

$data = json_decode(file_get_contents(($url)), true);

$names = array();
$stories = array();

foreach($data['data'] as $post)
{
    $names[] = $post['from']['name'];
    $stories[] = $post['message'];
}

$url = $data['paging']['next'];

// this is meant to scrap data recurssively from the next links
while($url !== '')
{
    $url = $data['paging']['next'];
    $data = json_decode(file_get_contents(($url)), true);

    foreach($data['data'] as $post)
    {
        $names[] = $post['from']['name'];
        $stories[] = $post['message'];
    }

    $url = urldecode($data['paging']['next']);
    echo $url . '<br />';
}


for($j = 0; $j < count($names); $j++)
{
  $data .= $names[$j] . '|' . $stories[$j] . "\n";
}

$h = fopen("data.txt", "a+");
fwrite($h, $data);
fclose($h);

Но проблема в том, что скрипт продолжает работать без вывода вообще, а также файл не создается.Я установил настройки времени скрипта на более высокое значение.allow_url_fopen также включен.Что-то не так в сценарии или, возможно, я не делаю рекурсию правильным способом?Любое решение / альтернатива этому?

Ответы [ 3 ]

4 голосов
/ 29 августа 2010

Вы должны использовать Graph API. Данные, которые вы копируете, доступны в формате JSON на

и содержит ссылки для получения предыдущих / следующих страниц, например, подкачки.

Пример:

$data = json_decode(file_get_contents(($url)));
foreach($data->data as $post) {
    echo $post->from->name, ': ',
         $post->message,
         PHP_EOL;
}

Выше будут выведены все сообщения на стене. Для пейджинга сделайте

echo $data->paging->previous;
echo $data->paging->next;

Это выведет два URL. Все, что вам нужно сделать, это загрузить их снова.

2 голосов
/ 29 августа 2010

Кнопка / ссылка, вероятно, запускает запрос XMLHttpRequest, поэтому посмотрите в своем браузере firebug / developer console / что бы вы ни использовали, чтобы узнать, какой URL он запрашивает, с какими заголовками HTTP и т. Д. Затем просто выполните тот же запрос с помощью cURL и у тебя вышло?

0 голосов
/ 29 августа 2010
http://www.facebook.com/ajax/stream/profile.php?__a=1&profile_id=139878432710216&viewer_id=(your facebook id)&filter=1&max_time=1283023194&_log_clicktype=Filter%20Stories%20or%20Pagination&ajax_log=1

Загружается через ajax. Вам также необходимо выяснить эти переменные. Максимальное время, вероятно, с какого момента показывать сообщения.

Хорошо, верхняя ссылка может быть короче (тот же вывод) ...

http://www.facebook.com/ajax/stream/profile.php?__a=1&profile_id=139878432710216&max_time=1283023194
...