php抓取网页snoopy(抓取前记得把php.ini中的max_time设置的大点不然)

优采云 发布时间: 2021-12-31 12:13

  php抓取网页snoopy(抓取前记得把php.ini中的max_time设置的大点不然)

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

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

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

  1 我要抓取网站的一个列表页的内容我要抓取全国医院的信息,如下图

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

  $snoopy=new Snoopy();//医院list页面

 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();//医院list页面$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限"}';for($i = 1; $i results;

  }

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

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

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

    }

}

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

  $detailIndex = 1;for($i = 1; $i results);      $detailIndex++;

    }

}

  FQ工具下载

  克服障碍.rar

  演示下载

  史努比类的一些说明

  类方法

  获取($URI)

  这是用于抓取网页内容的方法。

  $URI 参数是被爬取的网页的 URL 地址。

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

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

  获取文本($URI)

  该方法与fetch()类似,唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的文本内容。

  fetchform($URI)

  该方法与fetch()类似,唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。

  获取链接($URI)

  此方法类似于 fetch()。唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的链接。

  默认情况下,相对链接将自动完成并转换为完整的 URL。

  提交($URI,$formvars)

  此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。

  提交文本($URI,$formvars)

  该方法与submit()类似,唯一不同的是,该方法会去除HTML标签等无关数据,仅在登录后返回网页中的文本内容。

  提交链接($URI)

  该方法与submit()类似,唯一不同的是,该方法会去除HTML标签等无关数据,只返回网页中的链接。

  默认情况下,相对链接将自动完成并转换为完整的 URL。

  类属性

  $host

  连接主机

  $端口

  连接端口

  $proxy_host

  使用的代理主机(如果有)

  $proxy_port

  使用的代理主机端口(如果有)

  $代理

  用户代理伪装(史努比 v0.1)

  $referer

  源信息(如果有)

  $cookies

  饼干,如果有的话

  $rawheaders

  其他标题信息,如果有的话

  $maxredirs

  最大重定向次数 0=不允许 (5)

  $offsiteok

  是否允许异地重定向。(真的)

  $expandlinks

  是否完成所有链接完成地址(true)

  $用户

  身份验证用户名(如果有)

  $pass

  身份验证用户名(如果有)

  $接受

  http 接受类型(p_w_picpath/gif、p_w_picpath/x-xbitmap、p_w_picpath/jpeg、p_w_picpath/pjpeg、*/*)

  $错误

  在哪里报告错误,如果有的话

  $response_code

  服务器返回的响应码

  $headers

  服务器返回的头部信息

  $最大长度

  最大返回数据长度

  $read_timeout

  读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示没有超时

  $timed_out

  如果读取操作超时,则此属性返回 true(需要 PHP 4 Beta 4+)

  $maxframes

  允许跟踪的最大帧数

  $状态

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线