帝国cms导航站如何通过链接一键获取网站meta信息(标题、关键词、描述)

  有朋友想做个导航站,找了一圈网上关于帝国cms内核的网址导航站源码,发现价值2999元帝国CMS芒果目录网整站源码符合他的需求,在网上下载安装该源码后发现通过链接一键获取网站meta信息(标题、关键词、描述)和只获取权重网站功能已经失效,同时在线php网站缩略图功能也失效了,问能不能做一款导航站,对于帝国cms功能的二次开发,只能说先测试一下,不保证能全部解决

  需求一:通过链接一键获取网站meta信息(标题、关键词、描述)

  对于这个需求,下载了价值2999元帝国CMS芒果目录网整站源码,发现原需求接口也是使用,php使用正则表达式获取meta信息

/** 获取META信息 */
function get_sitemeta($url) {
     $data = file_get_contents($url);
     $meta = array();
     if (!empty($data)) {
          #Title
          preg_match('/<TITLE>([wW]*?)</TITLE>/si', $data, $matches);
          if (!empty($matches[1])) {
               $meta['title'] = $matches[1];
          }
          #Keywords
          preg_match('/<METAs+name="keywords"s+content="([wW]*?)"/si', $data, $matches);         
          if (empty($matches[1])) {
               preg_match("/<METAs+name='keywords's+content='([wW]*?)'/si", $data, $matches);              
          }
          if (empty($matches[1])) {
               preg_match('/<METAs+content="([wW]*?)"s+name="keywords"/si', $data, $matches);              
          }
          if (empty($matches[1])) {
               preg_match('/<METAs+http-equiv="keywords"s+content="([wW]*?)"/si', $data, $matches);              
          }
          if (!empty($matches[1])) {
               $meta['keywords'] = $matches[1];
          }
          #Description
          preg_match('/<METAs+name="description"s+content="([wW]*?)"/si', $data, $matches);         
          if (empty($matches[1])) {
               preg_match("/<METAs+name='description's+content='([wW]*?)'/si", $data, $matches);              
          }
          if (empty($matches[1])) {
               preg_match('/<METAs+content="([wW]*?)"s+name="description"/si', $data, $matches);                        
          }
          if (empty($matches[1])) {
               preg_match('/<METAs+http-equiv="description"s+content="([wW]*?)"/si', $data, $matches);              
          }
          if (!empty($matches[1])) {
               $meta['description'] = $matches[1];
          }
     }
     return $meta;
}

  简单写了个index.php,加入以下代码,测试该正则表达式是正确的,不论是http://开头还是https://开头链接都可以获取到meta信息三件套标题、关键词和描述

  $site = "http://xingkongweb.com";
  $content = get_sitemeta($site);
  print_r($content);

  那么在帝国cms信息页点击获取网站信息却不成功,是哪里除了问题呢?

  问题一:点击获取网站信息提示非法来源

  解决:后台--系统设置--安全参数设置--开启后台来源认证码--把金刚模式改成刺猬模式

  问题二:修改问题一,但是点击获取网站信息无法获取meta信息

  通过弹窗链接发现,点击获取网站信息时包含meta信息和权重信息

  而权重信息链接是失效的,只需要把获取权重的参数删除即可获取meta信息

  问题三:只能获取http://开头的网站,https://开头的网站meta信息无法获取

  原因是原程序作者在写入时,就没有考虑https://

  这时,只需要运用PHP curl_init()简单使用在HTTP、HTTPS上的写法,就能获取到网站meta信息

  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//不做服务器认证
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//不做客户端认证

 至此,成功实现通过链接获取网站meta信息,也就是标题、关键词、和描述

帝国cms导航站如何通过链接一键获取网站meta信息(标题、关键词、描述)

  需求二:获取网站权重,也就是百度搜索、360搜索、搜狗搜索、神马搜索权重,这个目前不打算写,原因很简单,目前没有找到免费的接口!爱站和站长工具的接口都是需要收费的,至于一些个人博客提供的api,更不打算写了,因为不知道能用多久!

  所以这个需求放弃做了。

  需求三:通过链接获取网站缩略图

  原程序模板使用的是:https://blinky.nemui.org/获取网站缩略图,但是现在似乎网站挂掉了,使用国内ip访问无法打开,使用外网访问也打不开。简单搜索国内网站缩略图的api接口,免费的基本没有,这个功能也只能作罢,如果有免费的网站缩略图api接口,可以抽空写上,不过可以换个方式,可以使用网站ico图片作为缩略图,只需要网址+/favicon.ico即可,至于帝国cms无法上传ico图标,可以查看文章:帝国cms无法上传ico图标格式文件的解决方法

  至此,只实现了通过链接一键获取网站meta信息。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
广告位招租919838898
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索