snoopy——PHP版的网络客户端

来源:互联网 发布:linux 自动解压war包 编辑:程序博客网 时间:2024/06/11 00:21

magpierss中就用到了snoopy,这让我有点兴趣去研究下这个咚咚。再SF上,找到了这个源代码。居然就是一个类,但不要笑看哦,功能可是很强大的。

     官方的简介, snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。
    下面是它的一些特征:
1、方便抓取网页的内容
2、方便抓取网页的文字(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本的用户/密码认证模式
6、支持自定义用户agent,referer,cookies和header内容
7、支持浏览器转向,并能控制转向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、方便提交数据并且获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持再转向的时候传递cookies

下面是简单的例子,比如说我们抓取我的blog的文字

 
 

^_^,不错把,在比如抓取链接


嘿嘿,效果不错把,而且全部都是我们需要的url,而没有那种/blog/read.php/85.htm那种东西。
snoopy更新了(已经两年没有更新了)。snoopy的地址是
http://sourceforge.net/projects/snoopy/。虽然只是更新到1.2.4(之前是1.2.1),也只是修正了一些小的BUG,但很高兴,作者又开始回来关注这个了。

      snoopy是个非常好用的类,在PHP抓取中用的非常广。

 

/* update at 2009-03-23*/ 

 

在项目应用过程中,发现了一个BUG,那就是用$snoopy->fetch()来抓取百度图片搜索时,因为百度默认是每页显示20张图片,可以通过rn这个参数来指定每页显示多少张图片,例如,http://image.baidu.com/i?tn=baiduimage&ct=201326592&cl=2&lm=-1&pv=&word=star&z=0&rn=2,在用$snoopy->fetch()中rn并没有起作用,不过rn等于什么值,它抓取出来的还是每页20张图片。

为了兼容,我自己把snoopy的fetch($url)多加了个参数,具体如下:

 

原创粉丝点击