使用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