Sina App Engine(SAE)入门教程(8)- SaeFetchurl使用

fetchurl是什么?

FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步的抓取http页面,FetchURL针对国内的网络的做了优化,内部有调度系统,尽可能保证用户快速的抓取到目标页面。在SAE上使用FetchURL非常简单,只需要调用sae_std_lib中的几个简单的函数即可。

FetchURL是sae初期不支持curl时的替代方案,现在sae已经完全兼容 curl!

fetchurl怎么用?

例如我想抓取百度的网页,那么代码如下:

<?php
$f = new SaeFetchurl();
$content = $f->fetch('http://www.baidu.com');
var_dump($content);
?>

可以访问 http://lazydemo.sinaapp.com/fetchurl/fetch_baidu.php 查看结果。

当然现在sae已经全面支持curl,以上的例子完全可以用curl改写:

关于curl的函数请参见:http://php.sinaapp.com/manual/zh/ref.curl.php

<?php
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

关于sae对snoopy的支持

说到这方面的内容,大家应该都会想到snoopy,经过测试,sae对于snoopy是完全兼容的,具体可以移步:关于SAE(Sina App Engine)对snoopy的支持问题 此时还可以使用snoopy改写这个,见代码:

<?php
// start test
echo "i am alive!";
include("snoopy.class.php");
$snoopy = new Snoopy;
$url = "http://www.baidu.com";
$snoopy->fetch($url); //获取所有内容  
echo $snoopy->results; //显示结果
?>

可以访问 http://lazydemo.sinaapp.com/fetchurl/snoopy_baidu.php 查看结果。

不支持设置proxy操作

sae curl不支持CURLOPT_PROXY选项设置

本教程代码打包下载

http://lazydemo.sinaapp.com/fetchurl/fetchurl.zip