background image

$snoopy

 = 

new

 Snoopy;

$snoopy

->proxy_host = "www.7767.cn";

$snoopy

->proxy_port = "8080";

$snoopy

->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";

$snoopy

->referer = ";

$snoopy

->cookies["SessionID"] = 238472834723489l;

$snoopy

->cookies["favoriteColor"] = "RED";

$snoopy

->rawheaders["Pragma"] = "no-cache";

$snoopy

->maxredirs = 2;

$snoopy

->offsiteok = false;

$snoopy

->expandlinks = false;

$snoopy

->user = "joe";

$snoopy

->pass = "bloe";

if

(

$snoopy

->fetchtext(""))

{

echo

 "<PRE>".htmlspecialchars(

$snoopy

->results)."</PRE>\n";

}

else

echo

 "error fetching document: ".

$snoopy

->error."\n";

//////////////////////////////////////////////////////////////
Snoopy

“ ” “ ”

的特点是 大 和 全 ,一个 fetch 什么都采到了,可以作为采集的第一步。接下来

就需要用 simple_html_dom 来细细的把想要的部分,扣出来。当然,如果你特别特别擅长
正则,而且又钟爱正则,你也可以用正则去匹配抓取。

simple_html_dom 其实是一个 dom 解析的过程。php 内部也提供了一些解析的方法,但是这
个 simple_html_dom 可以说做得比较专业,一个类,满足了很多你想要的功能。
////////////////////////////////////////////////////////////////
// 用一个 URL

 

或文件名,创建一个目标文档对象 ,也就是目标网页

$html = file_get_html ('http://www.7767.cn/' );
//$html = file_get_html ('test.htm' );
//用一个字符串作为一个目标网页。你可以通过 Snoopy 获取页面,然后再拿到这里来处理
$myhtml = str_get_html ('<html><body>Hello!</body></html>' );
// 

 

找到所有的图片,返回的是数组

foreach($html->find ('img' ) as $element) 
echo $element->src . '<br>' ;
// 

 

找到所有的链接

foreach($html->find ('a' ) as $element) 
echo $element->href . '<br>' ;

find 方法很好用,通常它返回的是一个包含对象的数组。查找目标元素的时候可以通过
class 或者 id,或者其他属性获取目标字符串。

//通过目标 div 的 class 属性,查找 div,find 方法中第二个参数是返回的那个数组中的第