<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我爱水煮鱼&#187; Snoopy</title>
	<atom:link href="http://fairyfish.net/tag/snoopy/feed/" rel="self" type="application/rss+xml" />
	<link>http://fairyfish.net</link>
	<description>关注 WordPress，关注互联网</description>
	<lastBuildDate>Tue, 22 May 2012 15:17:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Snoopy</title>
		<link>http://fairyfish.net/2008/03/11/snoopy/</link>
		<comments>http://fairyfish.net/2008/03/11/snoopy/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 09:39:16 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[开源]]></category>
		<category><![CDATA[Snoopy]]></category>

		<guid isPermaLink="false">http://fairyfish.net/?p=1267</guid>
		<description><![CDATA[OK，这里讲的不是卡通 Snoopy 了。是 PHP 一个类。它能用来模仿 web 浏览器的功能，它能完成获取网页内容和发送表单的任务。从它的官方网站可以了解到： 快速简便抓取网页的内容，文本（去掉了 Html 标签）和链接。 支持代理服务器，基本的用户/密码认证模式，内容。 支持浏览器重定向，并控制深度。 扩展获取的链接成带有域名的链接（默认） 能提交表单数据并获取结果 支持跟踪 HTML 框架（0.92 版本增加） 支持在重定向时传递 cookies（0.92 版本增加）results。如果你抓取的是框架，这每个 frame 都会被抓取，结果会保存到一个数组中。 fetchtext($URI) 这个方法和 fetch() 是大致相同，只是它的结果是文本，除去 HTML 标签和其他无关信息。 fetchform($URI) 这个方法只返回抓取的网页上 form 元素。 fetchlinks($URI) 这个方法只返回抓取的网页上的链接，默认返回的链接都是含有域名的链接。 submit($URI,$formvars) 这个方法提交一个表单到指定的 $URI。$formvars 是要传递的 form 变量数组。 submittext($URI,$formvars) 这个方法和 submit() 基本一致，但是它返回的是文本，除去了 html 标签和其他无关数据。 submitlinks($URI) 这个方法返回的是链接。 在 WordPress 中，已经包含了这个类，并且我们前面提到的 MagpieRSS 这个 RSS [...]]]></description>
			<content:encoded><![CDATA[<p>OK，这里讲的不是卡通 Snoopy 了。是 PHP 一个类。它能用来模仿 web 浏览器的功能，它能完成获取网页内容和发送表单的任务。从<a href="http://sourceforge.net/projects/snoopy/">它的官方网站</a>可以了解到：</p>
<ol>
<li>快速简便抓取网页的内容，文本（去掉了 Html 标签）和链接。</li>
<li>支持代理服务器，基本的用户/密码认证模式，内容。</li>
<li>支持浏览器重定向，并控制深度。</li>
<li>扩展获取的链接成带有域名的链接（默认）</li>
<li>能提交表单数据并获取结果</li>
<li>支持跟踪 HTML 框架（0.92 版本增加）</li>
<li>支持在重定向时传递 cookies（0.92 版本增加）</li
</ol>
<p><span id="more-1267"></span><br />
Snoopy 正确运行需要你的服务器的 PHP 版本在 4 以上，并且支持 PCRE（Perl Compatible Regular Expressions），基本的 LAMP 服务都支持。</p>
<p>它提供以下的接口或者方法：</p>
<p><strong><code>fetch($URI)</code></strong><br />
这个方法是抓取网页的内容，<code>$URI</code> 是要抓取网页的网址，抓取过来结果存储到 <code>$this->results</code>。如果你抓取的是框架，这每个 frame 都会被抓取，结果会保存到一个数组中。</p>
<p><strong><code>fetchtext($URI)</code></strong><br />
这个方法和 <code>fetch()</code> 是大致相同，只是它的结果是文本，除去 HTML 标签和其他无关信息。</p>
<p><strong><code>fetchform($URI)</code></strong><br />
这个方法只返回抓取的网页上 form 元素。</p>
<p><strong><code>fetchlinks($URI)</code></strong><br />
这个方法只返回抓取的网页上的链接，默认返回的链接都是含有域名的链接。</p>
<p><strong><code>submit($URI,$formvars)</code></strong><br />
这个方法提交一个表单到指定的 <code>$URI</code>。<code>$formvars</code> 是要传递的 form 变量数组。</p>
<p><strong><code>submittext($URI,$formvars)</code></strong><br />
这个方法和 <code>submit()</code> 基本一致，但是它返回的是文本，除去了 html 标签和其他无关数据。</p>
<p><strong><code>submitlinks($URI)</code></strong><br />
这个方法返回的是链接。</p>
<p>在 WordPress 中，已经包含了这个类，并且我们前面提到的 <a href="http://fairyfish.net/2008/02/27/magpierss/">MagpieRSS</a> 这个 RSS 解析类中，也使用这个类去获取 RSS。最新版的 WordPress 2.5 就使用 Snoopy 来下载文件来更新插件，其中用到的 Snoopy 类的代码为：</p>
<pre>
<span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">download_url</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$url</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;"> ! </span><span style="color: #00008b;">$url</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">false</span><span style="color: Gray;">;
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$tmpfname</span><span style="color: Gray;"> = </span><span style="color: Blue;">tempnam</span><span style="color: Olive;">(</span><span style="color: Blue;">get_temp_dir</span><span style="color: Olive;">()</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">wpupdate</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//获取临时文件名</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;"> ! </span><span style="color: #00008b;">$tmpfname</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">false</span><span style="color: Gray;">;
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$handle</span><span style="color: Gray;"> = </span><span style="color: Blue;">fopen</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tmpfname</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">w</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//以写的方式打开临时文件</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;"> ! </span><span style="color: #00008b;">$handle</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">false</span><span style="color: Gray;">;
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">require_once</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: Blue;">ABSPATH</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;">wp-includes/class-snoopy.php</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//引入 Snoopy 类</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$snoopy</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Snoopy</span><span style="color: Olive;">()</span><span style="color: Gray;">;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">$snoopy</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">fetch</span><span style="color: Olive;">(</span><span style="color: #00008b;">$url</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//抓取指定的网页</span><span style="color: Gray;">
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">fwrite</span><span style="color: Olive;">(</span><span style="color: #00008b;">$handle</span><span style="color: Gray;">, </span><span style="color: #00008b;">$snoopy</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">results</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//把抓取得内容写到 临时文件中</span><span style="color: Gray;">
&nbsp;&nbsp; &nbsp;</span><span style="color: Blue;">fclose</span><span style="color: Olive;">(</span><span style="color: #00008b;">$handle</span><span style="color: Olive;">)</span><span style="color: Gray;">;
&nbsp;
&nbsp;&nbsp; &nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: #00008b;">$tmpfname</span><span style="color: Gray;">;
</span><span style="color: Olive;">}</span><span style="color: Gray;"></span>
</pre>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2008/03/11/snoopy/" title="Snoopy">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2008/03/11/snoopy/&title=Snoopy&tags=Snoopy, "  title="Snoopy">收藏本文</a>
 / <a href="http://fairyfish.net/2008/03/11/snoopy/#comments" title="Snoopy">12条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=103051775&amp;utmr=-&amp;utmp=%2Frss%2F2008%2F03%2F11%2Fsnoopy%2F&amp;utmdt=Snoopy&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2008/03/11/snoopy/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

