php网页抓取(requiresPHP4Beta4+)$maxframes允许追踪的框架)
优采云 发布时间: 2022-01-19 00:15php网页抓取(requiresPHP4Beta4+)$maxframes允许追踪的框架)
$error 报告在哪里,如果有的话
$response_code 服务器返回的响应码
从服务器返回的 $headers 标头
$maxlength 最长返回数据长度
$read_timeout 读取超时(需要 PHP 4 Beta 4+)
设置为 0 表示没有超时
$timed_out 如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+)
$maxframes 允许跟踪的最大帧数
$status 获取 http 状态
Web 服务器可以写入的临时文件的 $temp_dir 目录 (/tmp)
cURL二进制的$curl_path目录,如果没有cURL二进制则设置为false
以下是演示
复制代码代码如下:
包括“Snoopy.class.php”;
$snoopy = 新史努比;
$snoopy->proxy_host = "";
$snoopy->proxy_port = "8080";
$snoopy->agent = "(兼容;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(""))
{
回声“
".htmlspecialchars($snoopy->results)."
\n";
}
其他
echo "获取文档时出错:".$snoopy->error."\n";
////////////////////////////////////// //////////
Snoopy 的特点是“大”和“满”,一次 fetch 可以拾取一切,可以作为 采集 的第一步。接下来,您需要使用 simple_html_dom 扣除所需的部分。当然,如果你特别擅长规律,喜欢规律,也可以用规律来搭配抢。
simple_html_dom 实际上是一个 dom 解析过程。 PHP也提供了一些解析方法,不过这个simple_html_dom可以说是比较专业的一个类,满足了很多你想要的功能。
////////////////////////////////////// ///////////
// 使用URL或文件名创建目标文档对象,即目标网页
$html = file_get_html ('' );
//$html = file_get_html('test.htm');
//使用字符串作为登陆页面。可以通过Snoopy获取页面,然后在这里获取处理
$myhtml = str_get_html ('你好!' );
// 查找所有图片并返回一个数组
foreach($html->find ('img' ) as $element)
echo $element->src 。 '
' ;
// 查找所有链接
foreach($html->find ('a') as $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->getAllAttributes()
数组
$e->属性
字符串
$e->getAttribute($name)
字符串
$e->属性
无效
$e->setAttribute($name, $value)
无效
$value = $e->属性
布尔
$e->hasAttribute($name)
布尔
isset($e->属性)
无效
$e->removeAttribute ($name)
无效
$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->parent()
混合
$e->childNodes ([$index])
混合
$e->children ([int $index])
元素
$e->firstChild()
元素
$e->first_child()
元素
$e->lastChild()
元素
$e->last_child()
元素
$e->nextSibling()
元素
$e->next_sibling()
元素
$e->previousSibling()
元素
$e->prev_sibling()