转换为语音并朗读全文 00:00 / 00:00

20131010172554

今天做客户网址收集的时候突然想到的一个功能,不打开别人网站就能看到别人用的是什么主题,版本号是多少,作者是谁,作者链接是多少等等等等。

然后从这个想法衍生出了:用代码获取别人网站主题中的所有图片文件、css文件、js文件等等等等。

结果还别说,真能实现呢,这样抠下来的东西就是主题上面的那层皮。但是博主不会用来扒什么皮,只是获取一些内容罢了。

简单说来,实现这方法就是用curl抓取网页内容和用preg_match_all正则表达式匹配内容。如果网站是用JQ操作DOM数据的话,那就抓不到了。

下面博主教大家怎么抓取别人网站上的主题名称和版本号以及作者。

首先我们先用function定义getcontent()

function getcontent($url){
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
$content = trim(curl_exec($ch));
curl_close($ch);
return $content;
}
// 此方法可能已失效,请换用:https://github.com/maicong/OpenAPI/blob/master/curl_get.php

这里我们尽量把超时时间设大一点,这里我设置为30秒,在获取内容后,用trim()去掉空白字符再赋予给变量$content。

接着就抓取网页内容:

$url = "http://fatesinger.com/";
$get = getcontent($url);

这里我用大发哥的网址示例(发哥别怪我),抓到内容后,用preg_match_all正则表达式匹配内容进行匹配:

preg_match_all ("/themes\/(.*)\/style\.css/i",$get, $out, PREG_SET_ORDER);

这里匹配的是“themes”后面和“/style”前面的内容,“/i”表示不区分大小写,输出的是一个多维数组,用print_r($out);把它打印出来就是:

Array ( [0] => Array ( [0] => themes/presscore/style.css [1] => presscore ) )

现在可以发现,大发哥用的主题叫“presscore”,我们只取需要的,用echo输出它就行了:

echo $out[0][1];

输出的结果自然就是“presscore”了。

如果对方主题style.css文件包含在css文件夹里面,获取到的结果就会包含这个路径,那么就用str_replace()替换掉就行:

echo str_replace("/css","",$out[0][1]);

现在我们获取到了别人使用的主题名称,现在我们就更进一步:

$getcss = getcontent($url."/wp-content/themes/".$out[0][1]."/style.css");
preg_match_all ("/Theme Name:(.*)/",$getcss, $theme, PREG_SET_ORDER);
preg_match_all ("/Version:(.*)/",$getcss, $version, PREG_SET_ORDER);
preg_match_all ("/Author:(.*)/",$getcss, $author, PREG_SET_ORDER);
preg_match_all ("/Author URI:(.*)/",$getcss, $authorurl, PREG_SET_ORDER);

打印$theme$version$author$authorurl

Array ( [0] => Array ( [0] => Theme Name:PressCore [1] => PressCore ) ) 
Array ( [0] => Array ( [0] => Version:3.0 [1] => 3.0 ) ) 
Array ( [0] => Array ( [0] => Author:Bigfa [1] => Bigfa ) ) 
Array ( [0] => Array ( [0] => Author URI: [1] => ) )

这样,我们就获取到了主题名称、版本号、作者、作者链接。

对应的输出方法就是:

echo "主题名称:".$theme[0][1]."<br>";
echo "版本号:".$version[0][1]."<br>";
echo "作者:".$author[0][1]."<br>";
echo "作者链接:".$authorurl[0][1]."<br>";

查看演示 查看源码

如果你觉得文章不错,可以给点小小奖励~

微信

微信

支付宝

支付宝

带符号 * 的表示必填项
  1. 同盟源
    同盟源

    右键查看源代码,点击样式表链接,样式表前几排就是作者信息

    回复
  2. 购物生活好店品
    购物生活好店品

    用处不是很大,不过用来看一些js还是比较有用的。再用类似的一些插件~~

    回复
  3. island
    island

    好屌啊,收藏了

    回复
  4. 小武
    小武

    这个厉害!

    回复
  5. 胡倡萌
    胡倡萌

    其实没什么实际用途,我都是直接看css

    回复
  6. 馒头饭MADfan
    馒头饭MADfan

    好棒的手段

    回复
  7. 明明博客
    明明博客

    听说花七七的博客关闭了...

    回复
  8. 云淡然
    云淡然

    :shock: 获取http://qianduanblog.com 好像失败了

    回复