php抓取网页数据实例(requiresPHP4Beta4+)$maxframes允许追踪的框架)
优采云 发布时间: 2021-12-07 16:04php抓取网页数据实例(requiresPHP4Beta4+)$maxframes允许追踪的框架)
$error报告错误的位置(如果有)
$response\ucode从服务器返回的响应代码
$headers从服务器返回的头信息
$MaxLength最大返回数据长度
$read_uuTimeout读取操作超时(需要PHP 4 beta 4+)
设置为0表示无超时
$timed_uuoout如果读取操作超时,则此属性返回true(需要PHP 4 beta 4+)
$maxframes允许跟踪的最大帧数
$Status获取的HTTP的状态
$temp\udir是web服务器可以写入的临时文件目录(/tmp)
$curl_uuPath是curl二进制文件的目录。如果没有curl二进制文件,则将其设置为false
这是演示
副本代码如下:
包括“Snoopy.class.php”
$snoopy=新的snoopy
$snoopy->proxy_uuhost=“”
$snoopy->proxy\uport=“8080”
$snoopy->agent=“(兼容;MSIE4.01;MSN2.5;AOL4.0;Windows 98)>”
$snoopy->referer=“”
$snoopy->cookies[“SessionID”]=238472834723489l
$snoopy->cookies[“favoriteColor”]=“红色”
$snoopy->rawheaders[“Pragma”]=“无缓存”
$snoopy->maxredirs=2
$snoopy->offsiteok=false
$snoopy->expandlinks=false
$snoopy->user=“joe”
$snoopy->pass=“bloe”
如果($snoopy->fetchtext(“”)
{
回声“
".htmlspecialchars($snoopy->results)."
\n”
}
否则
echo“获取文档时出错:“.$snoopy->错误”。\n”
//////////////////////////////////////////////////////////////
史努比的特点是“大”和“满”。抓取可以采集所有东西,这可以作为采集的第一步。接下来,你需要使用简单的html\U dom来仔细地选择所需的部分。当然,如果你特别擅长规则并且喜欢规则,你也可以使用规则来匹配和抓取
Simple_html_dom实际上是一个dom解析过程。PHP还提供了一些解析方法,但这个Simple_html_dom可以说更专业。它是一个满足您需要的许多函数的类
////////////////////////////////////////////////////////////////
//使用URL或文件名创建目标文档对象,即目标网页
$html=文件获取html(“”)
//$html=file_get_html('test.htm')
//使用字符串作为目标页。您可以通过Snoopy获取该页,然后在此处获取以进行处理
$myhtml=str_get_html('Hello!')
//找到所有图片并返回一个数组
foreach($html->find('img')作为$element)
echo$element->src'
",
//查找所有链接
foreach($html->find('a')作为$element)
echo$element->href
",
find方法非常有用。通常,它返回一个收录对象的数组。在查找目标元素时,可以通过class或ID或其他属性获取目标字符串
//通过目标div的class属性查找div。Find方法中的第二个参数是返回数组的编号。第一个参数从0开始
$target_div=$html->find('div.targetclass',0)
//检查结果是否符合您的要求。直接回显即可
echo$target_div
//关键是采集对象创建后必须销毁,否则PHP页面可能会“卡住”约30秒,具体取决于服务器的时间限制。销毁方法为:
$html->clear()
未结算($html)
我认为simple_html_dom的优势在于它与JS一样易于控制采集。下面提供的下载包中有一本英文手册
simplehtmldom_1_11/simplehtmldom/manual/manual.htm
数组$e->GetAllAttribute()
数组$e->attr
字符串$e->getAttribute($name)
字符串$e->attribute
void$e->setAttribute($name,$value)
void$value=$e->attribute
bool$e->hasAttribute($name)
boolisset($e->attribute)
作废$e->removeAttribute($name)
void$e->attribute=null
元素$e->getElementById($id)
混合$e->find(#$id),0)
混合$e->getElementsById($id[,$index])
混合$e->find(“#$id”[,int$index])
元素$e->getElementByTagName($name)
混合$e->find($name,0)
混合$e->getElementsByTagName($name[,$index])
混合$e->find($name[,int$index])
元素$e->parentNode()
元素$e->父元素()
混合$e->childNodes([$index])
混合$e->children([int$index])
元素$e->firstChild()
元素$e->第一个子元素()
元素$e->lastChild()
元素$e->最后一个子元素()
元素$e->nextSibling()
元素$e->下一个兄弟姐妹()
元素$e->上一个同级元素()
元素$e->prev_同级()