搜索
首页php教程php手册一个数据采集类
一个数据采集类Jun 13, 2016 pm 12:34 PM
linux代码作者兼容复制数据采集程序

复制代码 代码如下:



// 兼容 php4 php5
// 程序作者  张建 52linux.com(我爱Linux)
// 联系方法  733905@qq.com  QQ 733905 
// 简单调用方法
/*

include ("ugs.php"); // 你可以下载本ugs.phps 然后重命名为ugs.php
$ugs = new ugs();
$url = "http://domainname.com/path_to_your_target?param";
$ugs->seturl($url);
$ugs->gather();
//............这里可以调用本类里的其它方法,对$ugs->value_  做调整,
以满足您的要求
$content=$ugs->getcontent();
print($content);
?>
*/
class ugs
{
    var $value_  ;  //'目标内容
    var $src_    ;  //'目标URL地址

    function seturl($url)
    {
        $this->src_=$url;
    }
    function getcontent()
    {
        return $this->value_;
    }
    function getfile($url)
     // 获取目标
    {
        $url_parsed = parse_url($url);
        $host = $url_parsed["host"];
        $port = $url_parsed["port"];
        if ($port==0)  $port = 80;
        $path = $url_parsed["path"];
        if (empty($path))
        $path="/";
        if ($url_parsed["query"] != "")
           $path .= "?".$url_parsed["query"];
        $out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
        $fp = fsockopen($host, $port, $errno, $errstr, 30);
        fwrite($fp, $out);
        $body = false;
        while (!feof($fp))
        {
          $s = fgets($fp, 1024);
          if ( $body )  $in .= $s;
          if ( $s == "\r\n" )
               $body = true;
        }
        fclose($fp);
        return $in;
   }

   function getfile_curl($url)
   {
    $curl="/usr/local/bin/curl " ; // path to your curl 
    $curl_options=" -s --connect-timeout 10  --max-time 10  "; 
    // curl 用法请参考 curl --help 或者 man curl 
    // curl 参数非常之丰富,可以模拟各种浏览器(agent) 可以设置referer
    $cmd="$curl $curl_options $url ";
    @exec($cmd,$o,$r);
    if($r!=0) 
    {
        return "超时";
    }
    else
    {
        $o=join("",$o);
        return $o;
    }
   }

    function gather_curl($curl)
    {
        $http=$this->getfile_curl($this->src_);
        return $this->value_=$http;
    }

    function gather_array($url)
     {
        return file($url);
    }

    function   gather()
     // 开始收集
    {
        $http=$this->getfile($this->src_);
        return $this->value_=$http;
    }

    function gather_local($toline=true)
     // 处理本地文件
    {

        if($toline)
        {
            $http=file($this->src_);
            return $this->value_=$this->BytesToBstr($http);
        }
        else
        {
            $http=file($this->src_);
            return $this->value_=$http;
        }



    }

    function noReturn()
     // 删除回车换行
    {
        $this->value_=str_replace("\n","",$this->value_);
        $this->value_=str_replace("\r","",$this->value_);
    }


    function change($oldStr,$str)
    //'对收集到的内容中的个别字符串用新值更换/方法
    //'参数分别是旧字符串,新字符串
    {
        $this->value_=str_replace($oldStr,$str,$this->value_ );
    }



    function cut($start,$end,$no='1',$comprise='')
    //'按指定首尾字符串对收集的内容进行裁减(不包括首尾字符串)方法
    // $no 必须是 1,2 3 ... 不允许是0
    //$comprise 可以选择 start 或者 end 或者 all 或者 什么都不填
    {
        $string=explode($start,$this->value_);
        //print_r($string);
        $string=explode($end,$string[$no]);
        //print_r($string);
        switch ($comprise){
                case 'start':
                        $string=$start.$string[0];
                break;
                case 'end':
                        $string=$string[0].$end;
                break;
                case 'all':
                        $string=$start.$string[0].$end;
                break;
                default:
                        $string=$string[0];
        }
        return $this->value_=$string;
        }


    function  filt($head,$bot,$str,$no='1',$comprise='')
    //'按指定首尾字符串对收集的内容用新值进行替换(不包括首尾字符串)方法
    // '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
    {
        $tmp_v=$this->value_;
        $tmp=$this->cut($head,$bot,$no,$comprise);
        return $this->value_=str_replace($tmp,$str,$tmp_v);
    }



    function  local()
    {
        //'将收集的内容中的绝对URL地址改为本地相对地址
        // 还没实现
    }



    function  replaceByReg($patrn,$str)
     //'对收集的内容中的符合正则表达式的字符串用新值进行替换/方法
     //'参数是你自定义的正则表达式,新值
    {
        return $this->value_=join("",preg_replace($patrn,$str,$this->value_));
    }



    function debug()
    //调试显示
    {
        $tempstr="<script>function runEx(){var winEx2 = window.open(\"\", \"winEx2\", \"width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes\"); winEx2.document.open(\"text/html\", \"replace\"); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open('','','top=10000,left=10000');win.document.write(document.all.asdf.innerText);win.document.execCommand('SaveAs','','javascript.htm');win.close();}</script>



      
";
        echo $tempstr;
    }


}
?>

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP中的命名规范:如何使用驼峰命名法命名类、方法和变量PHP中的命名规范:如何使用驼峰命名法命名类、方法和变量Jul 30, 2023 pm 02:43 PM

PHP中的命名规范:如何使用驼峰命名法命名类、方法和变量在PHP编程中,良好的命名规范是一种重要的编码实践。它可以提高代码的可读性和可维护性,并且使团队合作更加顺畅。在本文中,我们将探讨一个常见的命名规范:驼峰命名法,并提供一些示例来说明如何在PHP中使用它来命名类、方法和变量。一、什么是驼峰命名法?驼峰命名法是一种常用的命名约定,其中每个单词的首字母大写,

PHP学习笔记:网络爬虫与数据采集PHP学习笔记:网络爬虫与数据采集Oct 08, 2023 pm 12:04 PM

PHP学习笔记:网络爬虫与数据采集引言:网络爬虫是一种自动从互联网上抓取数据的工具,它可以模拟人的行为,浏览网页并收集所需的数据。PHP作为一种流行的服务器端脚本语言,在网络爬虫和数据采集领域也发挥了重要的作用。本文将介绍如何使用PHP编写网络爬虫,并提供实际的代码示例。一、网络爬虫的基本原理网络爬虫的基本原理是通过发送HTTP请求,接收并解析服务器响应的H

Java中找不到类——java.lang.ClassNotFoundException如何解决?Java中找不到类——java.lang.ClassNotFoundException如何解决?Jun 25, 2023 am 10:37 AM

在Java开发过程中,有时候会遇到一个错误:java.lang.ClassNotFoundException。它表示在Java虚拟机(JVM)中找不到所需的类文件。这个错误会导致程序不能正常运行,如果不及时解决,会延误开发进度。本文将介绍Java中找不到类的原因和解决方法。一、原因1.类的路径错误在Java中,包路径和类路径很重要。如果类路径设置错误或者类文

PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块Jul 29, 2023 pm 11:19 PM

PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块摘要:在开发中,经常遇到需要重复使用的代码块。为了提高代码的可维护性和可重用性,我们可以使用类和对象的封装技巧来对这些代码块进行封装。本文将介绍如何使用类和对象封装可重复使用的代码块,并提供几个具体的代码示例。使用类和对象的封装优势使用类和对象的封装有以下几个优势:1.1提高代码的可维护性通过将重复

uniapp应用如何实现传感器数据采集和分析uniapp应用如何实现传感器数据采集和分析Oct 25, 2023 am 11:49 AM

UniApp是一种跨平台的应用开发框架,它支持在同一份代码中同时开发iOS、Android、H5等多个平台的应用。在UniApp中实现传感器数据采集和分析的过程可以分为以下几个步骤:引入相关插件或库UniApp通过插件或库的形式扩展功能。对于传感器数据采集和分析,可以引入cordova-plugin-advanced-http插件来实现数据采集,同时使用ec

cheerio和puppeteer之间的区别是什么?cheerio和puppeteer之间的区别是什么?Aug 25, 2023 pm 07:45 PM

Cheerio和Puppeteer是两个流行的JavaScript库,用于网页抓取和计算机化,但它们具有独特的功能和使用案例。Cheerio是一个轻量级库,用于解析和操作HTML和XML文件,而Puppeteer是一个更强大的库,用于控制无头Chrome或Chromium浏览器以及自动化Web浏览任务。Cheerio用于网页抓取和信息提取,而Puppeteer用于网页计算机化、测试和抓取。Cheerio和Puppeteer之间的选择取决于您的特定需求和必需品。Cheerio是什么?Cheerio

PHP闭包类PHP闭包类Aug 19, 2023 am 11:01 AM

介绍匿名函数(也称为lambda)返回Closure类的对象。这个类有一些额外的方法,可以进一步控制匿名函数。语法Closure{&nbsp;&nbsp;/*Methods*/&nbsp;&nbsp;private__construct(void)&nbsp;&nbsp;publicstaticbind(Closure$closure,object$newthis[,mixed$newscope=&quot;static&quot;

golang中有没有类golang中有没有类Jan 12, 2023 pm 04:56 PM

golang中没有类。golang不是一门纯面向对象编程语言,它没有class(类)的概念,也就没有继承的说法,但Go也可以模拟面向对象的编程方式。在Go中,可以将struct比作其它语言中的class;通过struct定义结构体,表征一类对象,例“type person struct {...}”。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器