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 相关文章推荐
GD输出汉字的函数的分析
Oct 09 PHP
在WIN98下以apache模块方式安装php
Oct 09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 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创建PDF中文文档
2006/10/09 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
json 实例详细说明教程
2009/10/31 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
2013/09/22 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
nodejs基础应用
2017/02/03 NodeJs
Js自定义多选框效果的实例代码
2017/07/05 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
vue实现表格过滤功能
2019/09/27 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Python给图像添加噪声具体操作
2019/03/03 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
小学教师师德感言
2014/02/10 职场文书
银行求职自荐信范文
2015/03/04 职场文书
python爬虫--selenium模块
2021/03/31 Python
用python自动生成日历
2021/04/24 Python
python基础之类属性和实例属性
2021/10/24 Python
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android