PHP采集静态页面并把页面css,img,js保存的方法
2023-06-13 09:15:37 时间
本文实例讲述了PHP采集静态页面并把页面css,img,js保存的方法。分享给大家供大家参考。具体分析如下:
这是一个可以获取网页的html代码以及css,js,font和img资源的小工具,主要用来快速获取模板,如果你来不及设计UI或者看到不错的模板,则可以使用这个工具来抓取网页和提取资源文件,提取的内容会按相对路径来保存资源,因此你不必担心资源文件的错误url导入.
首页index.php,代码如下:
<html>
<head>
<metaname="author"content="flute"/>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>网页抓取器</title>
<linkrel="stylesheet"href="main.css"media="all"/>
<scripttype="text/javascript"src="jquery.js"></script>
<scripttype="text/javascript"src="main.js"></script>
</head>
<body>
<h1>WebGrabber</h1>
<hr/>
<divclass="box">
<h2>Url</h2>
<divclass="form">
<inputtype="text"id="project"value="projectname"/>
<inputtype="text"id="url"value="http://"size="60"/>
<buttonclass="submit"type="button">Get</button><spanid="tip"></span>
</div>
</div>
<divclass="box">
<spanclass="all"id="saveall">SaveAll</span>
<h2>List</h2>
<ulid="list">
</ul>
</div>
</body>
</html>
抓取页面代码grab.php,代码如下:
/*
*flute
*2014/03/31
*/
if(isset($_POST["url"])){
if(isset($_POST["project"])&&!is_dir($_POST["project"]))mkdir($_POST["project"],0777);
echojson_encode(grab($_POST["url"]));
}
functiongrab($url){
//$url="http://ldixing-wordpress.stor.sinaapp.com/uploads/leaves/test.html";
$data=array();
$file=preg_replace("/^.*//","",$url);
if(($content=file_get_contents($url))!==false){
if(isset($_POST["project"]))file_put_contents($_POST["project"]."/".$file,$content);
$pattern="/<link.*?href=("|")(.*?.css)1.*?>/i";
if(preg_match_all($pattern,$content,$matches)){
$data["css"]=$matches[2];
}
$pattern="/<script.*?src=("|")(.*?.js)1.*?>/i";
if(preg_match_all($pattern,$content,$matches)){
$data["js"]=$matches[2];
}
$pattern="/<img.*?src=("|")(.*?)1.*?>/i";
if(preg_match_all($pattern,$content,$matches)){
$data["img"]=$matches[2];
}
$pattern="/url(("|"|s)(.*?)1)/i";
if(preg_match_all($pattern,$content,$matches)){
$data["src"]=$matches[2];
}
}
return$data;
}
functionvardump($obj){
echo"<pre>";
print_r($obj);
echo"</pre>";
}
?>
保存css,js,img等资源的页面save.php,代码如下:
/*
* flute
* 2014/03/31
*/
if(isset($_POST["url"])&&isset($_POST["project"])&&isset($_POST["domain"])){
extract($_POST);
$url=preg_replace("/?.*$/","",$url);
$file=$url;
$arr=explode("/",$file);
$length=sizeof($arr);
$filename=$arr[$length-1];
$root=$project;
$dir=$root;
if($domain=="http"){
$dir=$root."/http";
if(!is_dir($dir))mkdir($dir,0777);
}else{
$file=$domain."/".$url;
for($i=0;$i<$length-1;$i++){
if(!emptyempty($arr[$i])){
$dir.="/".$arr[$i];
if(!is_dir($dir))mkdir($dir,0777);
}
}
}
if(!file_exists($dir."/".$filename)||filesize($dir."/".$filename)==0){
$content=file_get_contents($file);
file_put_contents($dir."/".$filename,$content);
}
}
?>
使用方法:
1.打开index页,输入项目名和要抓取的网址,网址必须是文件名结尾,如index.html;
2.点Get按钮,得到当前页面所有的css,js,img等资源列表;
3.点击css链接会获取css文件中的背景资源图片,附加在列表后头;
4.点击SaveAll即可保存列表中所有的文件,并按相对路径生成;
5.如果网页上有http远程文件,将会直接保存在http文件夹下;
6.Get和Save有时会失败,没关系重试几次即可。
希望本文所述对大家的php程序设计有所帮助。
相关文章
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- php静态延迟方法,phpstatic延迟静态绑定_PHP教程
- js如何实现阅读完协议后才可以注册
- 「.vue文件的编译」2. 模板编译之 simple-html-parser.js
- 快速拥抱Web开发:PHP与MySQL(php和mysqlweb开发)
- PHP向MySQL中安全插入数据(php插入mysql)
- 编程开发之路:PHP 与 MySQL 结缘(php与mysql程序设计)
- 数据PHP实现MySQL数据导出的实现方法(php导出mysql)
- PHP实现MySQL表格删除(php删除mysql表)
- MySQL连接池:PHP提供的快速访问方式(mysql连接池php)
- PHP与MSSQL联合 处理日期数据(php mssql 日期)
- PHP和MSSQL实现完美兼容:简单实用又稳定(php mssql兼容性)
- 使用PHP和MySQL研究论文(php mysql 论文)
- PHP开启Redis扩展:极大提升网站性能(php开启redis扩展)
- MySQL与PHP实现长久连接的完美结合(mysql php长连接)
- JS在Oracle中的应用(js如何oracle)
- 统计有多少行JS代码和ASP代码
- 使用php重新实现PHP脚本引擎内置函数
- PHP读取文件内容代码(txt,js等)
- jquerytablesorter.js支持中文表格排序改进
- 20个非常有用的PHP类库加速php开发
- js限制输入框可输入字节数代码
- JS自定义函数缺省值的设置方法
- Js,alert出现乱码问题的解决方法
- js日期相关函数总结分享
- js获取url参数代码实例分享(JS操作URL)
- js,jquery滚动/跳转页面到指定位置的实现思路
- 原生js实现fadein和fadeout淡入淡出效果
- js实现图片在未加载完成前显示加载中字样