首頁  >  文章  >  後端開發  >  利用curl,正規表示式做的一個php蜘蛛抓取器

利用curl,正規表示式做的一個php蜘蛛抓取器

WBOY
WBOY原創
2016-07-25 09:08:531144瀏覽
鳳網fcms內容管理系統
get.php 抓取框架,網頁內容的分析處理並進行相關替換
std.php 通用正規則
news_67_com.php 對http://news.67.com 的抓取分析器
先抓列表,再抓內容頁。
還欠缺監控,統計,錯誤處理功能。個人覺得還是比較好玩。
  1. include_once dirname(__FILE__) . '/std.php';
  2. $site = array(
  3. 'aname' => '中国娱乐网',
  4. 'domain' => 'news.67.com',
  5. 'dirname' => '目录名称,用于匹配基于目录不同的正文',
  6. 'gettype' => 'default',
  7. //获取主文件
  8. 'creg' => '/(?si)(.*?)\<\!--文章 end-->/',
  9. 'code' => 'utf-8',
  10. 'sub' => '获取子目录正则',
  11. 'content' => 'tag1',
  12. 'img_upload'=> array('tag1' => ''),
  13. //下一页
  14. 'reg_next' => '/(?is)下一页\>\><\/a>/',
  15. 'key0' => '/(?is)/',
  16. 'key0_ap' => array(array(',', '|'), ' '),
  17. 'tag0' => '/(?is)

    ([^<^>]*?)<\/h1>/',

  18. 'tag0_arp' => array(
  19. array(
  20. '/(?is)\(组图\)/',
  21. '/(?is)\(图\)/',
  22. '/(?is)\(图\.\./',
  23. '/(?is)\(组图\.\./',
  24. '/(?is)\./',
  25. '/(?is)(《|》)/',
  26. ),
  27. array(
  28. '', '', '', '', '', '',
  29. )
  30. ),
  31. 'tag1' => '/(?is)
    (.*?)[^/',
  32. 'tag1_brp' => array(
  33. array(
  34. '/(?is)(.*?)/',
  35. '/(?is)\(.*?\)/',
  36. '/(?is)\s*

    .*?(.*?)<\/p>\s*/',

  37. '/(?is)\s*

    \s*/',

  38. '/(?is)\s*

    \s*/',

  39. '/(?is) /',
  40. '/(?is)
    /',
  41. '/(?is)\s*

    \s*/',

  42. '/(?is)\s*

    \s*/',

  43. '/(?is)\s*
    \s*/',
  44. '/(?is)\s*<\/center>\s*/',
  45. '/(?is)\s*

    \s*/',

  46. ),
  47. array(
  48. '', '', '

    ', '

    ', '

    ', '', '', '

    ', '

    ', '

    ', '

    ', '

    '

  49. ),
  50. ),
  51. 'tag1_arp' => array(
  52. array(
  53. '/(?is)

    <\/p>/',

  54. '/(?is)<\/strong>/'
  55. ),
  56. array(
  57. '', ''
  58. ),
  59. ),
  60. 'strip' => array('tag1' => ''),
  61. 'tag2' => '/(?is)
    导读:\s*(.*?)\s*<\/div>/',
  62. 'tag2_arp' => array(
  63. array(
  64. '/(?is) /'
  65. ),
  66. array(
  67. ''
  68. ),
  69. ),
  70. 'tag3' => '/(?is)(中国娱乐网)/',
  71. 'tag4' => '/(?is)
    日期:(\d+-\d+-\d+ \d+:\d+:\d+).*?<\/div>/',
  72. );
  73. $map = array(
  74. 'tag' => 'key0',
  75. 'title' => 'tag0',
  76. 'content' => 'tag1',
  77. 'summary' => 'tag2',
  78. 'source' => 'tag3',
  79. 'pub_date' => 'tag4',
  80. );
  81. $site_list = array(
  82. 'aname' => '中国娱乐网',
  83. 'domain' => 'www.67.com',
  84. 'gettype' => 'default',
  85. 'creg' => '/(?si)
  86. 'code' => 'gbk',
  87. 'reg_next' => '/(?si)
  88. //链接
  89. 'tag0' => '/(?is)
  90. //标题
  91. '標籤1' => '/(?is)/',
  92. 'tag1_arp' => array(
  93. array(
  94. '/(?is)(組圖)/',
  95. '/(?is)(圖)/',
  96. '/( ?is)(圖. ./',
  97. '/(?is)(組圖../',
  98. '/(?is)./',
  99. '/(?is)( 《|》)/' ,
  100. ),
  101. 數組(
  102. '', '', '', '', '', '',
  103. )
  104. ),
  105. );
  106. $list_map = array(
  107. 'url' => 'tag0',
  108. 'title' => 'tag1',
  109. );
  110. $site_list_sub = array() ;
複製程式碼
  1. 全域$std;
  2. $std = array(
  3. 'url' => '[0-9a-zA-Z. :- /%_#;&]+',
  4. 'img' => '/(?is)利用curl,正規表示式做的一個php蜘蛛抓取器/',
  5. );
複製程式碼
  1. /**
  2. * test.php
  3. *
  4. * @author xzfred
  5. * @copyright 2009 fengone.com
  6. * @created 2010-12-07 .
  7. * @version $Id: php.php 3 2008-10-10 07:49:21Z fred $
  8. * SVNPath $HeadURL: http://192.168.0.16/svn/vim/骨骼/php.php $
  9. */
  10. /*
  11. include_once "std.php";
  12. include_once "ladyphp_once "std.php";
  13. include_once "ladyphp_163_comcom.com. ;
  14. */
  15. include_once $GLOBALS['g_dir_core'] 。 "get.php";
  16. //==================================== == ==============================================
  17. include_once DIR_HOST_TAG 。 '/tuku_ent_china_com.php';
  18. $obj = new FcHtmlParse($site);
  19. $c = $obj->parse(file_get_contents("http://tuku.ent.china.com/fun/ html /2011-08-23/181703.xml"));
  20. echo "nnn ===================n";
  21. echo $c[ ' field']['tag1'][0];
  22. echo "nnn ===================n";
  23. var_dump($c);
  24. exit();
  25. //列表測試
  26. $obj = new FcHtmlParse($site_list);
  27. $c = $obj->parse(file_get_contents("http:// tuku. ent.china.com/fun/html/3569_1.html"));
  28. var_dump($c);
  29. exit();
  30. /*
  31. $obj = new FcHtmlGet( $site);
  32. $c = $obj->getPage('http://star.pclady.com.cn/entertainment/ss/1106/703240.html');
  33. var_dump($ c);
  34. $obj = new FcHtmlGet($site);
  35. $c = $obj->getPage('http://star.pclady.com.cn/entertainment/ss/1106 /703240.html ');
  36. var_dump($c);
  37. $obj = new FcHtmlParse($site);
  38. $img_obj = new FcHtmlImgUpload($site);
  39. $c = $obj->parse($data);
  40. $ic = $img_obj->upload($c[' tag']['tag1 '][0]);
  41. var_dump($ic);
  42. $data = file_get_contents("e:/a.html");
  43. $c = $ obj->parse($ data);
  44. $ic = $img_obj->upload($c['tag']['tag1'][0]);
  45. var_dump($ic);
  46. */
  47. //var_dump($c['tag']['tag1']);
複製程式碼
  1. include_once $GLOBALS['g_dir_core'] . 'host/std.php';
  2. $site = array(
  3. 'aname' => '中华网娱乐图库',
  4. 'domain' => 'tuku.ent.china.com',
  5. 'dirname' => '目录名称,用于匹配基于目录不同的正文',
  6. 'gettype' => 'default',
  7. //获取主文件
  8. 'creg' => '/(?si)(.*?<\/list>)/',
  9. 'code' => 'utf-8',
  10. 'sub' => '获取子目录正则',
  11. 'content' => 'tag1',
  12. 'img_upload'=> array('tag1' => ''),
  13. //下一页
  14. 'reg_next' => '/(?is)
  15. //链接
  16. 'tag0' => '/(?is)
  17. 'tag0_brp' => array(
  18. array(
  19. '/(?is)\.htm/',
  20. ),
  21. array(
  22. '.xml'
  23. )
  24. ),
  25. //标题
  26. 'tag1' => '/(?is)
  27. 'tag1_arp' => array(
  28. array(
  29. '/(?is)\(图\)/',
  30. '/(?is)\"/',
  31. '/(?is)独家:/',
  32. '/(?is)独家:/',
  33. '/(?is)(《|》)/',
  34. ),
  35. array(
  36. '', '', '', '', '',
  37. )
  38. ),
  39. );
  40. $list_map = array(
  41. 'url' => 'tag0',
  42. 'title' => 'tag1',
  43. );
  44. $site_list_sub = array();
复制代码


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn