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

1、删除HTML中的JS部分

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

1<?php
2function delJS($html) {
3    $search = '~<script[^>]*?>.*?</script>~si';
4    return preg_replace($search,'',$html);
5}
6$html = file_get_contents('html/test.html');
7echo delJS($html);
8?>

2、采集css文件

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

html前端展示:

<pre data-language="HTML">```markup

<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
<?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文件的内容并保存到相应的位置。