Использование yql и php для очистки содержимого - PullRequest
3 голосов
/ 23 марта 2012

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

Что я в конечном итоге хочу сделатьпопробуйте вставить это в функцию WordPress, чтобы я мог вызвать его на странице (например, страница результатов).

Код, который я использовал в php (edit :: Я изменил код на этот)

ini_set('display_errors', 1);
    ini_set('log_errors', 1);
    error_reporting(E_ALL);

    $yql_base_url ="http://query.yahooapis.com/v1/public/yql";
    $yql_query = 'SELECT * FROM html WHERE url="http://www.nwjhl.com/leagues/standingsTotals.cfm?leagueID=15654&clientID=4594" AND xpath=\'//table[@class="yuiboxscores"]/tbody/tr\'';

    $yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query);
    $yql_query_url .= "&format=json";

    // set up the cURL
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $yql_query_url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);

    // execute the cURL
    $rawdata = curl_exec($c);
    curl_close($c);

    // Convert the returned JSON to a PHP object
    $data = json_decode($rawdata);

Мне удалось получить данные, которые я сейчас ищу, У меня просто проблемы с вытягиваниемЯ использую данные, потому что «tr» находится в массиве.

Я, вероятно, смотрел на его, вероятно, немного сложный для вычисления с YQL для меня, я думаю, что цикл for нужен, я простоне знаете, как ссылаться на [содержание], а затем, конечно же, на все остальные числа.Я пытался отладить с помощью

<code>$results = $data->query->results->td;
    echo '<pre>' . print_r($results) . '
';

Я не уверен, как я смог бы пройтись по всем этим объектам, массивам для отображения [контента] (который является командой) и, конечно же, статистики.Продолжая работать над этим, надеюсь, я смогу разобраться

1 Ответ

3 голосов
/ 23 марта 2012

json, который вы получаете по этому URL, не тот, который вы ожидаете. Попробуйте

echo $output

сразу после curl_close ($ ch);

затем запустив его через форматер json (Google это). $ data-> query-> results работает, но нет дочернего элемента с именем Result, просто он выглядит как jsonified html-таблица какого-то рода.

Как только вы увидите JSON в более удобочитаемом формате, ваша проблема может иметь для вас больше смысла.

В соответствии с вашими правками - попробуйте после json_decode необработанных данных. Я не уверен, какие именно данные вам нужны, но я предполагаю, что они будут в объектах, которые вы сбрасываете с помощью var_dump

$topics = $data->query->results->table->tbody->tr;
foreach ($topics as $topic)
   {
   echo "row:";
   var_dump($topic);
   }

Вот более конкретный пример того, как пройти через это и найти

elements

$topics = $data->query->results->table->tbody->tr;
foreach ($topics as $topic)
   {
   $data = $topic->td;
   foreach ($data as $element)
      {
      if (array_key_exists('a', $element))
         {
         echo "Team Name: " . $element->a->content . "\n";
         }
      if (array_key_exists('p', $element))
         {
         echo "Found P: " . $element->p . "\n";
         }
      }
   }
...