编程语言
首页 > 编程语言> > 使用yql和php抓取内容

使用yql和php抓取内容

作者:互联网

一直在与YQL鬼混,试图更好地理解它.我设法从外部站点获取了我想要的信息,并在YQL控制台中获得了一个“结果”节点,但是因此未能在本地开发服务器上显示结果.

我最终想要做的是尝试将其放入wordpress函数中,以便可以在页面上(例如排名页面)调用它.

我在php中使用的代码(编辑::我将代码更改为此)

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);

我已经设法让数据Im正在寻找,而Im却因为将“ tr”放在数组中而无法像Im那样提取数据.

我可能一直盯着它可能有点复杂,无法为我使用YQL进行计算,我认为需要一个for循环,我只是不确定如何引用[content],当然还有其他所有数字.我尝试用

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

我不确定如何将所有这些对象循环遍历一个数组以显示[content](这是团队),然后显示统计信息.希望我能继续努力

解决方法:

您从该URL返回的json与您期望的不一样.尝试

echo $output

在curl_close($ch)之后

然后通过json格式化程序运行它(对它进行搜索). $data-> query->结果可以工作,但没有名为Result的子级,它似乎只是某种形式的json化html表.

一旦以更易读的格式查看JSON,您的问题可能就更有意义了.

根据您的修改-在对原始数据进行json_decode后,请尝试此操作.我不确定您到底要存储哪些数据,但是我猜它会在您使用var_dump转储的对象中

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

这是如何遍历和查找元素的更具体示例

$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";
         }
      }
   }

标签:yql,json,php
来源: https://codeday.me/bug/20191201/2081810.html