<?php
//获取一个网页的meta信息
$url ="http://www.benxiaohai.com";
$meta = get_meta_tags($url);
//在这里还应该注意网页的编码问题,编码如果不一致,可以用iconv进行转码
print_r($meta);
//它将会返回一个标准的一维数组,如果meta信息为空,则返回一个空数组
这个函数是很方便,但是有时候会得到我们想得到更多的信息,这时候就应该再多加一些变化来使用了。下面的一段代码是一个简单的搜索引擎。因为搜索引擎可能只需要meta信息中的keyword和decription信息,所以其它多于的都会过滤掉。
<?php
function get_meta_data($html) {
preg_match_all(
"|<meta[^>]+name=//"([^//"]*)//"[^>]+content=//"([^//"]*)//"[^>]+>|i",$html,
$out,PREG_PATTERN_ORDER);
for ($i=0;$i < count($out[1]);$i++) {
//这里对这个数组进行遍历,取得自己想要的标签
if (strtolower($out[1][$i]) == "keywords") $meta['keywords'] = $out[2][$i];
if (strtolower($out[1][$i]) == "description") $meta['description'] = $out[2][$i];
}
return $meta;
}
?>
接下来的这段代码是一个基于这个的应用
<?php
function getUrlData($url)
{
$result = false;
$contents = getUrlContents($url);
if (isset($contents) && is_string($contents))
{
$title = null;
$metaTags = null;
preg_match('/<title>([^>]*)<//title>/si', $contents, $match );
if (isset($match) && is_array($match) && count($match) > 0)
{
$title = strip_tags($match[1]);
}
preg_match_all('/<[/s]*meta[/s]*name="?'
. '([^>"]*)"?[/s]*' .
'content="?([^>"]*)"?[/s]*[//]?[/s]*>/si', $contents,
$match);
if (isset($match) && is_array($match) && count($match) == 3)
{
$originals = $match[0];
$names = $match[1];
$values = $match[2];
if (count($originals) == count($names) && count($names) == count($values))
{
$metaTags = array();
for ($i=0, $limiti=count($names); $i < $limiti; $i++)
{
$metaTags[$names[$i]] = array (
'html' => htmlentities($originals[$i]),
'value' => $values[$i]
);
}
}
}
$result = array (
'title' => $title,
'metaTags' => $metaTags
);
}
return $result;
}
function getUrlContents($url, $maximumRedirections = null, $currentRedirection = 0)
{
$result = false;
$contents = @file_get_contents($url);
// Check if we need to go somewhere else
if (isset($contents) && is_string($contents))
{
preg_match_all('/<[/s]*meta[/s]*http-equiv="?REFRESH"?'
. '[/s]*content="?[0-9]*;[/s]*URL[/s]*=[/s]*([^>"]*)"?' .
'[/s]*[//]?[/s]*>/si', $contents, $match);
if (isset($match) && is_array($match) && count($match) == 2 && count($match[1]) == 1)
{
if (!isset($maximumRedirections) || $currentRedirection < $maximumRedirections)
{
return getUrlContents($match[1][0], $maximumRedirections, ++$currentRedirection);
}
$result = false;
}
else
{
$result = $contents;
}
}
return $contents;
}
$result = getUrlData('http://www.benxiaohai.com');
echo '<pre>'; print_r($result); echo '</pre>';
/****************************************得到的结果如下*******************************
Array
(
[title] => 笨小孩心情驿站 - 老天爱笨小孩
[metaTags] => Array
(
[author] => Array
(
[html] => <meta name="author" content="笨å°�å©å¿�æ��é©¿ç«�" />
[value] => 笨小孩心情驿站
)
[description] => Array
(
[html] => <meta name="description" content="è��天ç�±ç¬¨å°�å©" />
[value] => 老天爱笨小孩
)
[keywords] => Array
(
[html] => <meta name="keywords" content="笨å°�å©å¿�æ��é©¿ç«�" />
[value] => 笨小孩心情驿站
)
)
)
****************************************************************************/
?>
再下面的这段代码,将根据各个标签的长度给出优化建议,可以稍加修改,做出更完美的
<?php
$url="http://www.benxiaohai.com";
$result =get_meta_tags($url);
if(is_array($result)){
foreach($result as $key=>$value){
$key = strtolower($key);
switch ($key){
case "keywords":
$rs["keywords"] = $value;
break;
case "description":
$rs["description"]= $value;
break;
case "author":
$rs["author"]= $value;
break;
case "robots":
$rs["robots"]= $value;
break;
case "copyright":
$rs["copyright"] = $value;
break;
}
}
}else
{
echo "没有任何meta标签";
}
if(empty($rs["robots"])){
echo "没有Robots标签";
}
if(empty($rs["copyright"])){
echo "<br>页面没有任何版权信息";
}
if(empty($rs["author"])){
echo "<br>没有作者信息";
}
if(empty($rs["description"])){
echo "<br>没有页面描述信息";
}
if(empty($rs["keywords"])){
echo "<br>没有关键词信息";
}
?>
分享到:
相关推荐
//获取目标地址信息 //地址为空时提示用户输入 if (url == "") { alert("请输入网页地址。"); return; } document.getElementById("source").value = "正在加载……"; //提示正在加载 createXmlHttp(); //...
通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...
如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来,让我们瞧瞧。 HTML: <!DOCTYPE html> <html lang=en> <head> <meta ...
– 获取,因为它是第一个注册的网站域名年龄 – 获取的Twitter网站页面的数量 – 获取的Facebook链接的网站页面 – 获取网站谷歌网页速度等级 – 获取网站的谷歌网页排名 <?php /** * * SEO report for ...
元素 可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。 <meta> 标签位于文档的头部,不包含任何内容。 <meta> 标签的属性定义了与文档相关联的名称/值对...
网页内容预处理实现,主要流程是从给定文件中读取url,获取url对应网页,从网页中提取正文,分词后存储到文件中。 AnalyzerImpl:实现对网页正文和网页关键词(标题与meta标签中的keywords)的提取,以及分词,解析...
1、HttpService.dll是一个用于http/https协议访问网络获取数据的链接库,该链接库封装了C#的HttpWebRequest用于请求数据的Get和Post的操作方式,直接输入一个网址即可实现获取对应网页的源码,为网络编程中必不可少...
网页特效|Linkweb.cn/Js|---最简单的全日制时间显示,代码非常...<script>setInterval("linkweb.innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",1000); </html>
2.<meta>信息:在服务器和客户之间传递隐含信息 其中最重要的设置: http-equiv:设置和获取Content的内容,并把content的内容添加 http的响应头中。 Content: meta信息的内容2 例如: <meta http-equiv=”...
最近开发微信公众平台,做下记录,以前也开发过,这次开发又给忘了,搞了半天,还是做个笔记为好。 注意框架为MVC 开发微信公众平台。场景为,在模板页中获取用户openid,想要进行验证的页面,集成模板页就可以了...
2.2.1 元信息标签<Meta> 13 2.2.2 文本标签 18 2.2.3 列表标签 20 2.2.4 表格标签 24 2.2.5 超级链接标签 27 2.2.6 图像标签 29 2.2.7 背景声音标签 29 2.2.8 视频标签 29 2.3 网页表单和控件 30 2.3.1 表单...
FlickrMetaCrawlr Flickr 爬虫能够以编程方式下载 Flickr 照片和用户的... 它依赖于开放的 Flickr API,并为一组指定的标签、边界框和时间范围获取 Flickr 照片的元数据。 它将照片元数据上传到传感器观察服务 (SOS)。
代码如下: <...远程网页源代码读取</title> <style type=”text/css”> /* 页面字体样式 */ body, td, input, textarea { font-family:Arial; font-size:12px; } </style> <script type
对于个人,可以按照爱好和兴趣建立一个具有独特风格的网站,通过它来展示自我,共享资源;对于政府机关,可以利用网站宣传政策法规和进行网络办公,实现电子政务。因此,网页设计和制作技术越来越受到重视。 目前...
利用JS定时器做一个元素做一个有移动效果的方法,实现思路:首先声明一个变量存放元素距离左侧的边距,然后我们在声明一个变量存放每次元素需要移动的距离,然后再给这个方法一个完成时间就可以了。需要注意的是...
MetaDescription :获取或设置网页的元描述。 MetaKeywords :获取或设置网页的元关键字。 MetaRobots :获取或设置元机器人说明网页。 OgDescription :获取或设置网页的打开图描述。 在MetaDescription回落...
网站页面设置 - 可以设置每个页面的自定义标题、META标签、采用模版;设置每个版块采用什么插件和插件的显示参数 界面风格设置 - 可以选择模版,编辑模板 网站升级更新 - 连接远程升级服务器,获取最新升级信息,...
本文实例讲述了jQuery实现获取动态添加的标签对象。...meta charset=UTF-8> <title>www.jb51.net jQuery动态获取事件</title> </head> <body> <div id=test></div> </body> <scr
实现了一下功能: (1) 能够搜集本站内的...一个线程抓完一个网页后要适当停顿(sleep);最多允许与被搜集站点同时建立2个连接(本地做网页解析的线程数则不限)。 (7)采用多线程并行编程技术,提高搜集速度。
1.首先写一个自定义的html网页 login.html <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>test</title> </head> <body> <form method=...