php 循环抓取网页内容(json_decode函数的使用(一)PHP)
优采云 发布时间: 2022-03-01 02:15php 循环抓取网页内容(json_decode函数的使用(一)PHP)
好久没写PHP的文章了,也好久没用PHP了,差点忘记怎么弄了。JSON是现在比较流行的一种数据交换方式,比XML更流行,一般用作数据获取和交换的api接口。
就文章的标题而言,本文介绍了两个小点:PHP获取内容,PHP解析JSON并显示。
PHP获取界面内容
如果要解析JSON数据并显示在页面上,第一步必须要获取JSON接口文件的内容。要在 PHP 中获取页面的内容,可以使用 fopen() 函数远程访问页面,然后使用 fread() 函数循环获取内容。
假设接口文件页面是:,那么我们可以使用下面的语句来获取这个接口文件的内容:
$handle = fopen("http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
$content = "";
while (!feof($handle)) {
$content .= fread($handle, 10000);
}
fclose($handle);
这样保存的内容就是JSON api内容。
PHP解析JSON并显示
原创内容不能直接调用,必须经过PHP进一步处理后才能调用并显示在网页上。在 PHP 5.2 及以后的版本中,使用 json_decode() 函数解析 JSON 数据,并将其转换为 PHP 可以调用的数据格式。例如:
$content = json_decode($content);
解析后,我们可以像在 PHP 中调用数组数据一样调用 JSON 中的数据。这个调用方法需要根据具体的JSON数据格式编写,请看下面的demo。关于json_decode函数的使用,请参考PHP手册,这里不再赘述:
琼台博客实际调用api
细心的朋友会发现,潜行者m博客的侧边栏底部有一个“好友推荐”模块,里面推荐了琼台博客的一些文章。
友情推荐是琼台博客发起的一种博主之间的交流方式。它比传统的友情链接更有效,实现了博客内容的互补性。由于琼台博客的博客程序是自己写的,所以提供了一个JSON api接口来获取最新推荐的文章。
我用PHP获取这个JSON接口,然后输出到我博客的侧边栏,我们实践一下。
第一步,查看api调用方法
调用前一定要看对方的api调用手册,包括调用地址、调用方式、数据输出格式等。琼台博客的api描述地址如下:
根据文档,我使用了这样的参数,意思是调用他推荐的五个文章。
第二步,获取api结构数据
很简单,如上所述,具体代码如下:
$handle = fopen("http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
$content = "";
while (!feof($handle)) {
$content .= fread($handle, 10000);
}
fclose($handle);
先打开数据文件,然后将所有内容保存到content变量中,因为确定api数据不会超过10000个字符,所以fread函数的第二个参数使用10000。这样,api返回的JSON数据就存储在了content变量中。
第三步,解析输出内容
使用下面的代码解析数据,然后调用输出
$content = json_decode($content);
foreach ($content->data as $key) {
echo ''.$key->b_title.'';
}
先处理content变量中的JSON数据,然后将其转化为PHP可以调用的数据,然后用foreach遍历输出这5条内容,插入我需要的HTML格式的内容。
再加上样式修饰,这样就完成了JSON的获取和解析,并展示在页面上。调用其他api数据的方法类似。