php采集与js和css

2013年10月10日 发表评论 阅读评论

php采集过程中,对页面的某些无用信息或有用信息需要进行过滤。这里以js和css为例。如一些站点的js文件可能不是我们想要的,而别人的css样式可能又是你所机要的。现以两者为例说下php下的实现。

1、删除HTML中的JS部分

js在html的标记为<script>……</script> ,根据该规则,可以通过下面的代码实现过滤删除:

<?php
function delJS($html) {
	$search = '~<script[^>]*?>.*?</script>~si';
	return preg_replace($search,'',$html);
}
$html = file_get_contents('html/test.html');
echo delJS($html);
?>

2、采集css文件

采集css的方法,同样类推适用于图片类的采集。此处分成了两部分,一个是前端html文件,提示提交框,用于输入要采集的页面url,提交后交给后面的php去处理。当然也可以一个php去完成,具体代码如下:

html前端展示:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<form method="get" action="post.php">
<input type="text" name="q" style="width:500px">
<input type="submit" value="提交">
</form> 

php获取页面中的所有css文件名:

<?php
if($_GET) {
	$url= $_GET['q'];
	$data = file_get_contents($url); //http://www.qq.com
	$preg = '/<link (.*?)href="(.*?.css)"(.*?)/>/i';
	preg_match_all($preg,$data,$css_data,PREG_SET_ORDER);
	echo '<ol>';
	foreach ( $css_data as $v){
	echo '<li>';
	echo $v[2].'<br>';
	echo '</li>';
	}
	echo '</ol>';
}
?>

获取到所有css文件名列表,所有的一切就都水到渠成了。可能通过php调用shell进行wget或curl,也可以通过的自身的file_get_contents或curl相关函数下载css文件的内容并保存到相应的位置。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: perl/php/python/gawk/sed 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.