$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 方法中第二个参数是返回的那个数组中的第