snoopy php网页抓取工具(抓取前记得把php.ini中的max_execution会报错的)

优采云 发布时间: 2021-12-26 11:23

  snoopy php网页抓取工具(抓取前记得把php.ini中的max_execution会报错的)

  记得在进行爬取之前将php.ini中的max_execution_time设置为较大的值,否则会报错。

  一、 使用 Snoopy.class.php 抓取页面

  一个很可爱的类名。功能也非常强大。用于模拟浏览器获取网页内容和发送表单的功能。

  1 现在我想抓取一个网站的列表页面的内容。我要爬取的是全国各地医院的信息。

  2 我自然复制URL地址,使用Snoopy类抓取前10页的内容放到本地,在本地创建一个html文件进行分析。

  $snoopy=new Snoopy();//医院列表页

  for($i = 1; $i fetch($url); file_put_contents("web/page/$i.html", $snoopy->results);

  } echo'success';

  3 奇怪的是,返回的内容不是全国的内容而是上海的相关内容

  4 怀疑可能里面设置了cookie,然后用firebug查看。果然,有一个惊人的内幕。

  5 在请求中放入cookie的值,并添加设置语句$snoopy->cookies["_area_"]。情况大不相同,国家信息顺利返回。

  $snoopy=new Snoopy();//医院列表页$snoopy->cookies["_area_"] ='{"provinceId":"all","provinceName":"National","cityId":"all", "cityName":"Unlimited"}';for($i = 1; $i 结果;

  }

  2 使用phpQuery获取节点信息,DOM结构如下图

  使用一些phpQuery 方法结合DOM 结构来读取各个医院信息的URL 地址。

  for($i = 1; $i attr('href')); //医院详情

  }

  }

  3 根据读取的URL地址列表抓取指定页面。

  $detailIndex = 1; for($i = 1; $i 结果); $detailIndex++;

  }

  }

  FQ工具下载

  克服障碍.rar

  演示下载

  史努比类的一些说明

  类方法

  fetch($URI) 这是用于获取网页内容的方法。$URI 参数是被爬取的网页的 URL 地址。

  获取的结果存储在 $this->results 中。

  如果您正在抓取一帧,史努比将跟踪每一帧并将其存储在一个数组中,然后将其存储在 $this->results 中。

  fetchtext($URI) 这个方法类似于fetch()。唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的文本内容。fetchform($URI) 这个方法类似于fetch()。唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。fetchlinks($URI) 这个方法类似于fetch()。唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成并转换为完整的 URL。

  submit($URI,$formvars) 该方法向$URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。submittext($URI,$formvars) 这个方法类似于 submit()。唯一不同的是,该方法会去除HTML标签等无关数据,仅在登录后返回网页中的文本内容。submitlinks($URI) 这个方法类似于 submit()。唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成并转换为完整的 URL。

  类属性

  $proxy_host 使用的 $host 连接的主机 $port 连接的端口 代理主机如果有 $proxy_port 使用的代理主机端口 如果有 $agent 用户代理伪装(史努比 v0.1)$ Referer 信息,如果有的话, $cookiescookies, 如果有, $rawheaders 其他头信息, 如果有, $maxredirs 最大重定向次数 0=不允许 (5)$offsiteok 是否允许异地重定向。(true) $expandlinks 是否会完成完整地址的链接 (true) $user 认证用户名,如果有的话,$pass 认证用户名,如果有的话,$accepthttp 接受类型 (image/gif, image/ x-xbitmap, image/jpeg, image/pjpeg, */ *) $error 在哪里报错,如果有的话,$response_code 服务器返回的响应码 $headers 服务器返回的头信息 $maxlength 最长返回数据长度 $read_timeout 读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示不超时 $timed_out 如果读取操作超时,该属性返回true(需要PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status capture 取http状态 $temp_dir 网络服务器可以写入的临时文件目录( /tmp) $curl_path cURL 二进制文件的目录,如果没有 cURL 二进制文件,则设置为 false该属性返回true(需要PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status capture 取http状态 $temp_dir 网络服务器可以写入的临时文件目录(/tmp) $ curl_path cURL binary所在的目录,如果没有cURL binary,设置为false该属性返回true(需要PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status capture 取http状态 $temp_dir 网络服务器可以写入的临时文件目录(/tmp) $ curl_path cURL binary所在的目录,如果没有cURL binary,设置为false

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线