php生成RSS订阅的方法


Posted in PHP onFebruary 13, 2015

本文实例讲述了php生成RSS订阅的方法。分享给大家供大家参考。具体分析如下:

RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其实这三个解释都是指同一种Syndication的技术。RSS目前广泛用于网上新闻频道,blog和wiki。使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
从技术上来说一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀,下面是一段 rss 文件的内容示例:

<?xml version="1.0" encoding="utf-8"?> 

<rss version="2.0"> 

<channel> 

<title>三水点靠木</title> 

<link>https://3water.com/</link> 

<description>三水点靠木</description> 

<item> 

<title>RSS Tutorial</title> 

<link>网站地址/rss</link> 

<description>New RSS tutorial on W3School</description> 

</item> 

<item> 

<title>XML Tutorial</title> 

<link>网站地址/xml</link> 

<description>New XML tutorial on W3School</description> 

</item> 

</channel> 

</rss>

下面分享一段使用 php 动态生成 RSS 的代码示例:

<?php 

/** 

** php 动态生成 RSS 类 

**/ 

define("TIME_ZONE",""); 

define("FEEDCREATOR_VERSION","3water.com");//您的网址 

class FeedItem extends HtmlDescribable{ 

    var $title,$description,$link; 

    var $author,$authorEmail,$image,$category,$comments,$guid,$source,$creator;

    var $date;

    var $additionalElements=Array(); 

} 

 

class FeedImage extends HtmlDescribable{ 

    var $title,$url,$link; 

    var $width,$height,$description; 

} 

 

class HtmlDescribable{ 

    var $descriptionHtmlSyndicated; 

    var $descriptionTruncSize; 

 

    function getDescription(){ 

        $descriptionField=new FeedHtmlField($this->description); 

        $descriptionField->syndicateHtml=$this->descriptionHtmlSyndicated;

        $descriptionField->truncSize=$this->descriptionTruncSize;

        return $descriptionField->output(); 

    } 

} 

 

class FeedHtmlField{ 

    var $rawFieldContent; 

    var $truncSize,$syndicateHtml; 

    function FeedHtmlField($parFieldContent){ 

        if($parFieldContent){ 

            $this->rawFieldContent=$parFieldContent; 

        } 

    } 

    function output(){ 

        if(!$this->rawFieldContent){ 

            $result=""; 

        }    elseif($this->syndicateHtml){ 

            $result="<![CDATA[".$this->rawFieldContent."]]>"; 

        }else{ 

            if($this->truncSize and is_int($this->truncSize)){ 

                $result=FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);

            }else{ 

                $result=htmlspecialchars($this->rawFieldContent); 

            } 

        } 

        return $result; 

    } 

} 

 

class UniversalFeedCreator extends FeedCreator{ 

    var $_feed; 

    function _setFormat($format){ 

        switch (strtoupper($format)){ 

            case "2.0": 

                // fall through 

            case "RSS2.0": 

                $this->_feed=new RSSCreator20(); 

                break; 

            case "0.91": 

                // fall through 

            case "RSS0.91": 

                $this->_feed=new RSSCreator091(); 

                break; 

            default: 

                $this->_feed=new RSSCreator091(); 

                break; 

        } 

        $vars=get_object_vars($this); 

        foreach ($vars as $key => $value){ 

            // prevent overwriting of properties "contentType","encoding"; do not copy "_feed" itself 

            if(!in_array($key, array("_feed","contentType","encoding"))){ 

                $this->_feed->{$key}=$this->{$key}; 

            } 

        } 

    } 

 

    function createFeed($format="RSS0.91"){ 

        $this->_setFormat($format); 

        return $this->_feed->createFeed(); 

    } 

 

    function saveFeed($format="RSS0.91",$filename="",$displayContents=true){ 

        $this->_setFormat($format); 

        $this->_feed->saveFeed($filename,$displayContents); 

    } 

 

    function useCached($format="RSS0.91",$filename="",$timeout=3600){ 

        $this->_setFormat($format); 

        $this->_feed->useCached($filename,$timeout); 

    } 

} 

 

class FeedCreator extends HtmlDescribable{ 

    var $title,$description,$link; 

    var $syndicationURL,$image,$language,$copyright,$pubDate,$lastBuildDate,$editor,$editorEmail,$webmaster,$category,$docs,$ttl,$rating,$skipHours,$skipDays;

    var $xslStyleSheet=""; 

    var $items=Array(); 

    var $contentType="application/xml"; 

    var $encoding="utf-8"; 

    var $additionalElements=Array(); 

 

    function addItem($item){ 

        $this->items[]=$item; 

    } 

 

    function clearItem2Null(){ 

        $this->items=array(); 

    } 

 

    function iTrunc($string,$length){ 

        if(strlen($string)<=$length){ 

            return $string; 

        } 

 

        $pos=strrpos($string,"."); 

        if($pos>=$length-4){ 

            $string=substr($string,0,$length-4); 

            $pos=strrpos($string,"."); 

        } 

        if($pos>=$length*0.4){ 

            return substr($string,0,$pos+1)." ..."; 

        } 

 

        $pos=strrpos($string," "); 

        if($pos>=$length-4){ 

            $string=substr($string,0,$length-4); 

            $pos=strrpos($string," "); 

        } 

        if($pos>=$length*0.4){ 

            return substr($string,0,$pos)." ..."; 

        } 

 

        return substr($string,0,$length-4)." ..."; 

    } 

 

    function _createGeneratorComment(){ 

        return "<!-- generator=\"".FEEDCREATOR_VERSION."\" -->\n"; 

    } 

 

    function _createAdditionalElements($elements,$indentString=""){ 

        $ae=""; 

        if(is_array($elements)){ 

            foreach($elements AS $key => $value){ 

                $ae.= $indentString."<$key>$value</$key>\n"; 

            } 

        } 

        return $ae; 

    } 

 

    function _createStylesheetReferences(){ 

        $xml=""; 

        if($this->cssStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n"; 

        if($this->xslStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n"; 

        return $xml; 

    } 

 

    function createFeed(){} 

 

    function _generateFilename(){ 

        $fileInfo=pathinfo($_SERVER["PHP_SELF"]); 

        return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml"; 

    } 

 

    function _redirect($filename){ 

        Header("Content-Type: ".$this->contentType."; charset=".$this->encoding."; filename=".basename($filename)); 

        Header("Content-Disposition: inline; filename=".basename($filename)); 

        readfile($filename,"r"); 

        die(); 

    } 

 

    function useCached($filename="",$timeout=3600){ 

        $this->_timeout=$timeout; 

        if($filename==""){ 

            $filename=$this->_generateFilename(); 

        } 

        if(file_exists($filename) && (time()-filemtime($filename) < $timeout)){ 

            $this->_redirect($filename); 

        } 

    } 

 

    function saveFeed($filename="",$displayContents=true){ 

        if($filename==""){ 

            $filename=$this->_generateFilename(); 

        } 

        $feedFile=fopen($filename,"w+"); 

        if($feedFile){ 

            fputs($feedFile,$this->createFeed()); 

            fclose($feedFile); 

            if($displayContents){ 

                $this->_redirect($filename); 

            } 

        }else{ 

            echo "<br /><b>Error creating feed file, please check write permissions.</b><br />"; 

        } 

    } 

} 

 

class FeedDate{ 

    var $unix; 

    function FeedDate($dateString=""){ 

        if($dateString=="") $dateString=date("r"); 

        if(is_integer($dateString)){ 

            $this->unix=$dateString; 

            return; 

        } 

        if(preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+)?(\\d{1,2})\\s+([a-zA-Z]{3})\\s+(\\d{4})\\s+(\\d{2}):(\\d{2}):(\\d{2})\\s+(.*)~",$dateString,$matches)){ 

            $months=Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12); 

            $this->unix=mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]); 

            if(substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-'){ 

                $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60; 

            }else{ 

                if(strlen($matches[7])==1){ 

                    $oneHour=3600; 

                    $ord=ord($matches[7]); 

                    if($ord < ord("M")){ 

                        $tzOffset=(ord("A") - $ord - 1) * $oneHour; 

                    } elseif($ord >= ord("M") && $matches[7]!="Z"){ 

                        $tzOffset=($ord - ord("M")) * $oneHour; 

                    } elseif($matches[7]=="Z"){ 

                        $tzOffset=0; 

                    } 

                } 

                switch ($matches[7]){ 

                    case "UT": 

                    case "GMT":    $tzOffset=0; 

                } 

            } 

            $this->unix += $tzOffset; 

            return; 

        } 

        if(preg_match("~(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(.*)~",$dateString,$matches)){ 

            $this->unix=mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]); 

            if(substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-'){ 

                $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60; 

            }else{ 

                if($matches[7]=="Z"){ 

                    $tzOffset=0; 

                } 

            } 

            $this->unix += $tzOffset; 

            return; 

        } 

        $this->unix=0; 

    } 

 

    function rfc822(){ 

        $date=gmdate("Y-m-d H:i:s",$this->unix); 

        if(TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE); 

        return $date; 

    } 

 

    function iso8601(){ 

        $date=gmdate("Y-m-d H:i:s",$this->unix); 

        $date=substr($date,0,22) . ':' . substr($date,-2); 

        if(TIME_ZONE!="") $date=str_replace("+00:00",TIME_ZONE,$date); 

        return $date; 

    } 

 

    function unix(){ 

        return $this->unix; 

    } 

} 

 

class RSSCreator10 extends FeedCreator{ 

    function createFeed(){ 

        $feed="<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; 

        $feed.= $this->_createGeneratorComment(); 

        if($this->cssStyleSheet==""){ 

            $cssStyleSheet="http://www.w3.org/2000/08/w3c-synd/style.css"; 

        } 

        $feed.= $this->_createStylesheetReferences(); 

        $feed.= "<rdf:RDF\n"; 

        $feed.= "    xmlns=\"http://purl.org/rss/1.0/\"\n"; 

        $feed.= "    xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"; 

        $feed.= "    xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n"; 

        $feed.= "    xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n"; 

        $feed.= "    <channel rdf:about=\"".$this->syndicationURL."\">\n"; 

        $feed.= "        <title>".htmlspecialchars($this->title)."</title>\n"; 

        $feed.= "        <description>".htmlspecialchars($this->description)."</description>\n"; 

        $feed.= "        <link>".$this->link."</link>\n"; 

        if($this->image!=null){ 

            $feed.= "        <image rdf:resource=\"".$this->image->url."\" />\n"; 

        } 

        $now=new FeedDate(); 

        $feed.= "       <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n"; 

        $feed.= "        <items>\n"; 

        $feed.= "            <rdf:Seq>\n"; 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "                <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; 

        } 

        $feed.= "            </rdf:Seq>\n"; 

        $feed.= "        </items>\n"; 

        $feed.= "    </channel>\n"; 

        if($this->image!=null){ 

            $feed.= "    <image rdf:about=\"".$this->image->url."\">\n"; 

            $feed.= "        <title>".$this->image->title."</title>\n"; 

            $feed.= "        <link>".$this->image->link."</link>\n"; 

            $feed.= "        <url>".$this->image->url."</url>\n"; 

            $feed.= "    </image>\n"; 

        } 

        $feed.= $this->_createAdditionalElements($this->additionalElements,"    "); 

 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "    <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n"; 

            //$feed.= "        <dc:type>Posting</dc:type>\n"; 

            $feed.= "        <dc:format>text/html</dc:format>\n"; 

            if($this->items[$i]->date!=null){ 

                $itemDate=new FeedDate($this->items[$i]->date); 

                $feed.= "        <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n"; 

            } 

            if($this->items[$i]->source!=""){ 

                $feed.= "        <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n"; 

            } 

            if($this->items[$i]->author!=""){ 

                $feed.= "        <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n"; 

            } 

            $feed.= "        <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r","  ")))."</title>\n"; 

            $feed.= "        <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; 

            $feed.= "        <description>".htmlspecialchars($this->items[$i]->description)."</description>\n"; 

            $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements,"        "); 

            $feed.= "    </item>\n"; 

        } 

        $feed.= "</rdf:RDF>\n"; 

        return $feed; 

    } 

} 

 

class RSSCreator091 extends FeedCreator{ 

    var $RSSVersion; 

 

    function RSSCreator091(){ 

        $this->_setRSSVersion("0.91"); 

        $this->contentType="application/rss+xml"; 

    } 

 

    function _setRSSVersion($version){ 

        $this->RSSVersion=$version; 

    } 

 

    function createFeed(){ 

        $feed="<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; 

        $feed.= $this->_createGeneratorComment(); 

        $feed.= $this->_createStylesheetReferences(); 

        $feed.= "<rss version=\"".$this->RSSVersion."\">\n"; 

        $feed.= "    <channel>\n"; 

        $feed.= "        <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n"; 

        $this->descriptionTruncSize=500; 

        $feed.= "        <description>".$this->getDescription()."</description>\n"; 

        $feed.= "        <link>".$this->link."</link>\n"; 

        $now=new FeedDate(); 

        $feed.= "        <lastBuildDate>".htmlspecialchars($now->rfc822())."</lastBuildDate>\n"; 

        $feed.= "        <generator>".FEEDCREATOR_VERSION."</generator>\n"; 

 

        if($this->image!=null){ 

            $feed.= "        <image>\n"; 

            $feed.= "            <url>".$this->image->url."</url>\n"; 

            $feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n"; 

            $feed.= "            <link>".$this->image->link."</link>\n"; 

            if($this->image->width!=""){ 

                $feed.= "            <width>".$this->image->width."</width>\n"; 

            } 

            if($this->image->height!=""){ 

                $feed.= "            <height>".$this->image->height."</height>\n"; 

            } 

            if($this->image->description!=""){ 

                $feed.= "            <description>".$this->image->getDescription()."</description>\n"; 

            } 

            $feed.= "        </image>\n"; 

        } 

        if($this->language!=""){ 

            $feed.= "        <language>".$this->language."</language>\n"; 

        } 

        if($this->copyright!=""){ 

            $feed.= "        <copyright>".FeedCreator::iTrunc(htmlspecialchars($this->copyright),100)."</copyright>\n"; 

        } 

        if($this->editor!=""){ 

            $feed.= "        <managingEditor>".FeedCreator::iTrunc(htmlspecialchars($this->editor),100)."</managingEditor>\n"; 

        } 

        if($this->webmaster!=""){ 

            $feed.= "        <webMaster>".FeedCreator::iTrunc(htmlspecialchars($this->webmaster),100)."</webMaster>\n"; 

        } 

        if($this->pubDate!=""){ 

            $pubDate=new FeedDate($this->pubDate); 

            $feed.= "        <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n"; 

        } 

        if($this->category!=""){ 

            $feed.= "        <category>".htmlspecialchars($this->category)."</category>\n"; 

        } 

        if($this->docs!=""){ 

            $feed.= "        <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs),500)."</docs>\n"; 

        } 

        if($this->ttl!=""){ 

            $feed.= "        <ttl>".htmlspecialchars($this->ttl)."</ttl>\n"; 

        } 

        if($this->rating!=""){ 

            $feed.= "        <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating),500)."</rating>\n"; 

        } 

        if($this->skipHours!=""){ 

            $feed.= "        <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n"; 

        } 

        if($this->skipDays!=""){ 

            $feed.= "        <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n"; 

        } 

        $feed.= $this->_createAdditionalElements($this->additionalElements,"    "); 

 

        for ($i=0;$i<count($this->items);$i++){ 

            $feed.= "        <item>\n"; 

            $feed.= "            <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n"; 

            $feed.= "            <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; 

            $feed.= "            <description>".$this->items[$i]->getDescription()."</description>\n"; 

 

            if($this->items[$i]->author!=""){ 

                $feed.= "            <author>".htmlspecialchars($this->items[$i]->author)."</author>\n"; 

            } 

            /* 

             // on hold 

             if($this->items[$i]->source!=""){ 

             $feed.= "            <source>".htmlspecialchars($this->items[$i]->source)."</source>\n"; 

             } 

             */ 

            if($this->items[$i]->category!=""){ 

                $feed.= "            <category>".htmlspecialchars($this->items[$i]->category)."</category>\n"; 

            } 

            if($this->items[$i]->comments!=""){ 

                $feed.= "            <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n"; 

            } 

            if($this->items[$i]->date!=""){ 

                $itemDate=new FeedDate($this->items[$i]->date); 

                $feed.= "            <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n"; 

            } 

            if($this->items[$i]->guid!=""){ 

                $feed.= "            <guid>".htmlspecialchars($this->items[$i]->guid)."</guid>\n"; 

            } 

            $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements,"        "); 

            $feed.= "        </item>\n"; 

        } 

        $feed.= "    </channel>\n"; 

        $feed.= "</rss>\n"; 

        return $feed; 

    } 

} 

 

class RSSCreator20 extends RSSCreator091{ 

 

    function RSSCreator20(){ 

        parent::_setRSSVersion("2.0"); 

    } 

}

使用示例:
<?php 

header('Content-Type:text/html; charset=utf-8'); 

$db=mysql_connect('127.0.0.1','root','123456'); 

mysql_query("set names utf8"); 

mysql_select_db('dbname',$db); 

$brs=mysql_query('select * from article order by add_time desc limit 0,10',$db); 

$rss=new UniversalFeedCreator(); 

$rss->title="页面标题"; 

$rss->link="网址http://"; 

$rss->description="rss标题"; 

while($rowbrs=mysql_fetch_array($brs)){ 

    $item=new FeedItem(); 

    $item->title =$rowbrs['subject']; 

    $item->link='https://3water.com/'; 

    $item->description =$rowbrs['description']; 

    $rss->addItem($item); 

} 

mysql_close($db); 

$rss->saveFeed("RSS2.0","rss.xml");

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php.ini中date.timezone设置分析
Jul 29 PHP
PHP下判断网址是否有效的代码
Oct 08 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
php数值计算num类简单操作示例
May 15 PHP
linux下实现定时执行php脚本
Feb 13 #PHP
浅谈php自定义错误日志
Feb 13 #PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 #PHP
php制作动态随机验证码
Feb 12 #PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 #PHP
php模拟post提交数据的方法
Feb 12 #PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 #PHP
You might like
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
从零学Python之hello world
2014/05/21 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
pandas通过loc生成新的列方法
2018/11/28 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
售后求职信范文
2014/03/15 职场文书
学生安全责任书模板
2014/07/25 职场文书
普通党员个人整改措施
2014/10/27 职场文书
社区党员干部承诺书
2015/05/04 职场文书
交通事故案件代理词
2015/05/23 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Python爬取某拍短视频
2021/06/11 Python
instantclient客户端 连接oracle数据库
2022/04/26 Oracle