扒网站当中一般css中的图片扒不下来,这个脚本就是用来下载这些图片到本地的

流程

    1、获取css文件路径

    2、打开文件逐行读取判断是否包含需要的图片

      2.1 包含则 -进行截取直接获取到相对路径

        2.1.1 根据curl来文件流,fopne打开文件,fwrite写入文件

      2.2不包含则跳出

<?php
/**
* Created by PhpStorm.
* User: 小狗蛋儿
* Date: 2018/3/19
* Time: 14:39
*
* 获取css文件下面所有的css文件
* 然后替换所有的background
*/ $dirname=dirname("D:\\ibwant\\new.css-13.css"); $root_url="xxxxxx"; //网站根目录 $rege="";
if (!is_dir($dirname)){
echo "不是目录".$dirname;
}else { $file=array(); $scandir = scandir($dirname);
foreach ($scandir as $value){
if (getExtends($value)=="css"){ $handle = fopen ($dirname."\\".$value, "r");
GetsSave($handle,$value); }else{
continue;
} }
} /**
* @param $files
* @return mixed
* 出现的位置
*/
function getExtends($files){
return pathinfo($files, PATHINFO_EXTENSION);
} /**
* @param $opens
* @param $names
* 获取指定文件的位置
*/
function GetsSave($opens,$names){
$fl=array();
//feof 判断检测文件是否到末尾
while(!feof($opens)){
$contents=fgets($opens);
if(strstr($contents,"/*tpa=")){
$fl[]=substr($contents,strpos($contents,"=")+1); }else{
continue;
}
}
getDows($fl);
fclose($opens);
} // $s="xxxx";
// echo strpos($s,"*"); function getDows($as){
$cas=array();
foreach ($as as $value){ if (substr($value,0,4)!="http"){
continue;
}else {
$nums = strpos($value, "*");
$cas[] = substr($value, 0, $nums);
}
}
Saveimg($cas); } function Saveimg($ims){
foreach ($ims as $values){
$contens=trim(strrchr($values,"/"),"/"); // $filenames=substr($contens,0,strpos($contens,"."));
$return_content = http_get_data($values);
//var_dump($return_content); $fp= @fopen($contens,"a");
fwrite($fp,$return_content); } } function http_get_data($url){
$ch=curl_init();
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_URL, $url );
ob_start ();
curl_exec ( $ch );
$return_content = ob_get_contents ();
ob_end_clean (); $return_code = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );
return $return_content;
}

PHP修改css文件中的背景图片并下载到本地的更多相关文章

  1. css网页中设置背景图片的方法详解

    在css代码中设置背景图片的方法,包括背景图片.背景重复.背景固定.背景定位等   用css设置网页中的背景图片,主要有如下几个属性: 1,背景颜色 {">说明:参数取值和颜色属性一样 ...

  2. vue webpack打包后.css文件里面的背景图片路径错误解决方法

    资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css.js等资源,路径都是绝对的. 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static ...

  3. 动态修改css文件中,具体的class中的个别属性值。

    function setStyleSheetObjCssClassProperty(pStyleSheetObj, pSelectorText, pProperty, pValue) { var pS ...

  4. css文件 如何使背景图片大小适应div的大小

    对背景图片设置属性:background-size:cover;可以实现背景图片适应div的大小. background-size有3个属性: auto:当使用该属性的时候,背景图片将保持100% 的 ...

  5. HTML 或 CSS 文件中引用的图片文件移动到任意位置

    对于一个套接字的输入操作,第一步通常涉及等待数据从网络到达,当所等待分组到达时,被复制到内核的某个缓冲区: 第二步就是把数据从内核缓冲区复制到应用进程缓冲区.通过 Session 的 createQu ...

  6. Taro,实现小程序在样式文件中导入背景图片

    https://taro-docs.jd.com/taro/docs/static-reference.html 注意点是,控制你的图片大小,然后配置完limit后,把dist删掉,重新运行 npm ...

  7. CSS样式中,background-image 背景图片居中显示并且在不同屏幕分辨率下始终居中

    body {   margin-top:0px; margin-right:0px;   margin-bottom:0px;   margin-left:0px;   background-colo ...

  8. 用extract-text-webpack-plugin提取出来的css文件中背景图片url的不正确的问题

    在一个main.js中require一个scss文件,scss文件中用了背景图片,图片url是用的相对路径,用extract-text-webpack-plugin插件提取出的css文件背景图片路径不 ...

  9. Vue项目打包发布后CSS中的背景图片不显示

    相信有很多同学在学习vue的刚开始都遇到过项目打包发布后发现CSS中的背景图片不显示,具体如何解决只需要更改bind的配置即可 修改 build/utils.js 中的 generateLoaders ...

随机推荐

  1. 《C++primerplus》第12章“队列模拟”程序

    这个程序刚开始学有很多难点,个人认为主要有以下三项: 1.链表的概念 2.如何表示顾客随机到达的过程 3.程序执行时两类之间的关系,即执行逻辑 关于第一点,书上的图解释得比较清楚了,把"空指 ...

  2. Arduino 语法与函数

    Arduino programs can be divided in three main parts: structure, values (variables and constants), an ...

  3. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

  4. spring-boot-route(十三)整合RabbitMQ

    这篇是SpringBoot整合消息队列的第一篇文章,我们详细介绍下消息队列的相关内容. 消息队列简介 1. 什么是消息队列 MQ(Message Quene):通过典型的生产者和消费者模型,生产者不断 ...

  5. 多测师讲解性能测试_面试题_001高级讲师肖sir

    什么叫做性能测试?1. 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,所以一般来说性能测试介入的时机是在功能测试完成之后.另外,由定义中的及时性可知性能也是一种指标,可以 ...

  6. 多测师讲解——python002.2练习题

    # # 作业:第二天# ## # 1.求出1 / 1 + 1 / 3 + 1 / 5--+1 / 99的和 (1分之一+1分之三+1分支5....)# # 2.用循环语句,计算2 - 10之间整数的循 ...

  7. 从源码的角度解析Mybatis的会话机制

    坐在我旁边的钟同学听说我精通Mybatis源码(我就想不通,是谁透漏了风声),就顺带问了我一个问题:在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession会话? 可能最近撸多 ...

  8. 面试一个百度T7程序员,一道简单的题没答上来!网友却都在吐槽面试官!

    程序员面试时都考些什么? 一个面试官得意洋洋地说自己面了一个百度T7,出了一道coding题,结果对方连最长上升子序列都写不出来.   楼主本想嘲弄一下百度T7的代码水平低,没想到网友们炸开了锅,纷纷 ...

  9. Helium文档9-WebUI自动化-find_all获取页面table数据

    前言 find_all关键字根据官方介绍的作用是查找所有出现GUI元素,并且返回list,下面通过举例说明 入参介绍 def find_all(predicate): ""&quo ...

  10. 安卓日常开发和逆向中常用的shell命令与非shell命令

    简述shell 命令与 非shell命令区别 shell命令不用先adb shell进入界面执行 非shell命令必须要 adb shell进入界面执行 基础非shell命令 1.安装app adb ...