今天做客户网址收集的时候突然想到的一个功能,不打开别人网站就能看到别人用的是什么主题,版本号是多少,作者是谁,作者链接是多少等等等等。
然后从这个想法衍生出了:用代码获取别人网站主题中的所有图片文件、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; } |
这里我们尽量把超时时间设大一点,这里我设置为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>"; |
转载请注明:看近行远 » 用代码获取别人wordpress网站的主题