php实现递归抓取网页类实例

这篇文章主要介绍了php实现递归抓取网页类,实例分析了php递归操作及网页抓取的技巧,非常具有实用价值,需要的朋友可以参考下。

本文实例讲述了php实现递归抓取网页类的方法,分享给大家供大家参考,具体如下:

  1. <?php
  2. class crawler{
  3. private $_depth=5;
  4. private $_urls=array();
  5. function extract_links($url)
  6. {
  7. if(!$this->_started){
  8. $this->_started=1;
  9. $curr_depth=0;
  10. }else{
  11. $curr_depth++;
  12. }
  13. if($curr_depth<$this->_depth)
  14. {
  15. $data=file_get_contents($url);
  16. if(preg_match_all('/((?:http|https)://(?:www.)*(?:[a-zA-Z0-9_-]{1,15}.+[a-zA-Z0-9_]{1,}){1,}(?:[a-zA-Z0-9_/.-?&:%,!;]*))/',$data,$urls12))
  17. {
  18. foreach($urls12[0] as $k=>$v){
  19. $check=get_headers($v,1);
  20. if(strstr($v,$url) && $check[0]=='HTTP/1.1 200 OK' && !array_search($v,$this->_urls) && $curr_depth<$this->_depth){
  21. $this->_urls[]=$v;
  22. $this->extract_links($v);
  23. }
  24. }
  25. }
  26. }
  27. return $this->_urls;
  28. }
  29. }
  30. ?>