За последние 24 часа нас посетили 19679 программистов и 1689 роботов. Сейчас ищут 1712 программистов ...

Функции парсинга web-страниц

Тема в разделе "Регулярные выражения", создана пользователем Jensi, 1 июн 2009.

  1. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.  
    3. // получение doctype документа
    4. function get_doctype($file){
    5.     $h1tags = preg_match('/<!DOCTYPE (\w.*)dtd">/is',$file,$patterns);
    6.     $res = array();
    7.     array_push($res,$patterns[0]);
    8.     array_push($res,count($patterns[0]));
    9.     return $res;
    10. }
    11.  
    12. // получение заголовка страницы
    13. function get_doc_title($file){
    14.     $h1tags = preg_match('/<title> ?.* <\/title>/isx',$file,$patterns);
    15.     $res = array();
    16.     array_push($res,$patterns[0]);
    17.     array_push($res,count($patterns[0]));
    18.     return $res;
    19. }
    20.  
    21. // получение ключевых слов
    22. function get_keywords($file){
    23.     $h1tags = preg_match('/(<meta name="keywords" content="(.*)" \/>)/i',$file,$patterns);
    24.     $res = array();
    25.     array_push($res,$patterns[2]);
    26.     array_push($res,count($patterns[2]));
    27.     return $res;
    28. }
    29.  
    30. // получение rel ссылок из заголовков сайта
    31. function get_link_rel($file){
    32.     $h1tags = preg_match_all('/(rel=)(".*") href=(".*")/im',$file,$patterns);
    33.     $res = array();
    34.     array_push($res,$patterns);
    35.     array_push($res,count($patterns[2]));
    36.     return $res;
    37. }
    38. // получение внешних css
    39. function get_external_css($file){
    40.     $h1tags = preg_match_all('/(href=")(\w.*\.css)"/i',$file,$patterns);
    41.     $res = array();
    42.     array_push($res,$patterns[2]);
    43.     array_push($res,count($patterns[2]));
    44.     return $res;
    45. }
    46.  
    47. // получение всех h1 тэгов
    48. function get_h1($file){
    49.     $h1tags = preg_match_all("/(<h1.*>)(\w.*)(<\/h1>)/isxmU",$file,$patterns);
    50.     $res = array();
    51.     array_push($res,$patterns[2]);
    52.     array_push($res,count($patterns[2]));
    53.     return $res;
    54. }
    55.  
    56. // получение всех h2 тэгов  
    57.     function get_h2($file){
    58.     $h1tags = preg_match_all("/(<h2.*>)(\w.*)(<\/h2>)/isxmU",$file,$patterns);
    59.     $res = array();
    60.     array_push($res,$patterns[2]);
    61.     array_push($res,count($patterns[2]));
    62.     return $res;
    63. }
    64.  
    65. // получение всех h3 tags
    66. function get_h3($file){
    67.     $h1tags = preg_match_all("/(<h3.*>)(\w.*)(<\/h3>)/ismU",$file,$patterns);
    68.     $res = array();
    69.     array_push($res,$patterns[2]);
    70.     array_push($res,count($patterns[2]));
    71.     return $res;
    72. }
    73.  
    74. // получение всех h4 tags
    75. function get_h4($file){
    76.     $h1tags = preg_match_all("/(<h4.*>)(\w.*)(<\/h4>)/ismU",$file,$patterns);
    77.     $res = array();
    78.     array_push($res,$patterns[2]);
    79.     array_push($res,count($patterns[2]));
    80.     return $res;
    81. }
    82.  
    83. // получение всех h5 tags
    84. function get_h5($file){
    85.     $h1tags = preg_match_all("/(<h5.*>)(\w.*)(<\/h5>)/ismU",$file,$patterns);
    86.     $res = array();
    87.     array_push($res,$patterns[2]);
    88.     array_push($res,count($patterns[2]));
    89.     return $res;
    90. }
    91.  
    92. // получение всех h6 tags
    93. function get_h6($file){
    94.     $h1tags = preg_match_all("/(<h6.*>)(\w.*)(<\/h6>)/ismU",$file,$patterns);
    95.     $res = array();
    96.     array_push($res,$patterns[2]);
    97.     array_push($res,count($patterns[2]));
    98.     return $res;
    99. }
    100.  
    101. // получение содержания всех p тэгов
    102. function get_p($file){
    103.     $h1tags = preg_match_all("/(<p.*>)(\w.*)(<\/p>)/ismU",$file,$patterns);
    104.     $res = array();
    105.     array_push($res,$patterns[2]);
    106.     array_push($res,count($patterns[2]));
    107.     return $res;
    108. }
    109.  
    110. // получение всех названий ссылок
    111. function get_a_content($file){
    112.     $h1count = preg_match_all("/(<a.*>)(\w.*)(<.*>)/ismU",$file,$patterns);
    113.     return $patterns[2];
    114. }
    115.  
    116. // получение всех урликов
    117. function get_a_href($file){
    118.     $h1count = preg_match_all('/(href=")))*???")/i',$file,$patterns);
    119.     return $patterns[2];
    120. }
    121.  
    122. // подсчет кол-ва href
    123. function get_a_href_count($file){
    124.     $h1count = preg_match_all('/<(a.*) href=\"(.*?)\"(.*)<\/a>/',$file,$patterns);
    125.     return count($patterns[0]);
    126. }
    127.  
    128. // получение всех доп тегов внутри тега ссылки
    129. function get_a_additionaltags($file){
    130.     $h1count = preg_match_all('/<(a.*) href="(.*?)"(.*)>(.*)(<\/a>)/',$file,$patterns);
    131.     return $patterns[3];
    132. }
    133.  
    134. // получение всех  span ов
    135. function get_span($file){
    136.     $h1count = preg_match_all('/(<span .*>)))*)(<\/span>)/',$file,$patterns);
    137.     $res = array();
    138.     array_push($res,$patterns[2]);
    139.     array_push($res,count($patterns[2]));
    140.     return $res;
    141. }
    142.  
    143. // получение всех сркриптов - Яваскрипт в чатсности
    144. function get_script($file){
    145.     $h1count = preg_match_all('/(<script.*>)))*)(<\/script>)/imxsU',$file,$patterns);
    146.     $res = array();
    147.     array_push($res,$patterns[2]);
    148.     array_push($res,count($patterns[2]));
    149.     return $res;
    150. }
    151.  
    152. // получение всех ul
    153. function get_ul($file){
    154.     $h1count = preg_match_all('/(<ul \w*>)))*)(<\/ul>)/ismxU',$file,$patterns);
    155.     $res = array();
    156.     array_push($res,$patterns[2]);
    157.     array_push($res,count($patterns[2]));
    158.     return $res;
    159. }
    160.  
    161. // получение всех li
    162. function get_li($file){
    163.     $h1count = preg_match_all('/(<li \w*>)))*)(<\/li>)/ismxU',$file,$patterns);
    164.     $res = array();
    165.     array_push($res,$patterns[2]);
    166.     array_push($res,count($patterns[2]));
    167.     return $res;
    168. }
    169.  
    170. // получение всех комментов на странице
    171. function get_comments($file){
    172.     $h1count = preg_match_all('/(<!--)))*)(-->)/isU',$file,$patterns);
    173.     $res = array();
    174.     array_push($res,$patterns[2]);
    175.     array_push($res,count($patterns[2]));
    176.     return $res;
    177. }
    178.  
    179. // получение всех ID используемых на странице
    180. function get_ids($file){
    181.     $h1count = preg_match_all('/(id="(\w*)")/is',$file,$patterns);
    182.     $res = array();
    183.     array_push($res,$patterns[2]);
    184.     array_push($res,count($patterns[2]));
    185.     return $res;
    186. }
    187. // получение всех классов документа
    188. function get_classes($file){
    189.     $h1count = preg_match_all('/(class="(\w*)")/is',$file,$patterns);
    190.     $res = array();
    191.     array_push($res,$patterns[2]);
    192.     array_push($res,count($patterns[2]));
    193.     return $res;
    194. }
    195.  
    196. // получение всех мета тег данных
    197. function get_meta_content($file){
    198.     $h1count = preg_match_all('/(<meta)))*="(.*)").\/>/ix',$file,$patterns);
    199.     $res = array();
    200.     array_push($res,$patterns[2]);
    201.     array_push($res,count($patterns[2]));
    202.     return $res;
    203. }
    204.  
    205. // получение всех стилей (указанных построчно)
    206. function get_styles($file){
    207.     $h1count = preg_match_all('/(style=")))*???")/is',$file,$patterns);
    208.     $res = array();
    209.     array_push($res,$patterns[2]);
    210.     array_push($res,count($patterns[2]));
    211.     return $res;
    212. }
    213.  
    214. // получение всех титлов тегов
    215. function get_tag_titles($file){
    216.     $h1count = preg_match_all('/(title=)"(.*)"(.*)/',$file,$patterns);
    217.     $res = array();
    218.     array_push($res,$patterns[2]);
    219.     array_push($res,count($patterns[2]));
    220.     return $res;
    221. }
    222.  
    223. // получение всех альтернативных названий картинок
    224. function get_image_alt($file){
    225.     $h1count = preg_match_all('/(alt=...[a-zA-Z0-9\s]{1,})/',$file,$patterns);
    226.     $res = array();
    227.     array_push($res,$patterns[2]);
    228.     array_push($res,count($patterns[2]));
    229.     return $res;
    230. }
    231.  
    232. // получение всех изображений
    233. function get_images($file){
    234.     $h1count = preg_match_all('/(<img)\s (src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})")/isxmU',$file,$patterns);
    235.     $res = array();
    236.     array_push($res,$patterns[3]);
    237.     array_push($res,count($patterns[3]));
    238.     return $res;
    239. }
    240.  
    241. // получение всех имейлов с тегом mailto:
    242. function get_mailto($file){
    243.     $h1count = preg_match_all('/(<a\shref=")(mailto:)([a-zA-Z@0-9\.]{1,})"/ims',$file,$patterns);
    244.     $res = array();
    245.     array_push($res,$patterns[3]);
    246.     array_push($res,count($patterns[3]));
    247.     return $res;
    248. }
    249.  
    250. // получение всех имейлов
    251. function get_emails($file){
    252.     $h1count = preg_match_all('/[a-zA-Z0-9_-]{1,}@[a-zA-Z0-9-_]{1,}\.[a-zA-Z]{1,4}/',$file,$patterns);
    253.     $res = array();
    254.     array_push($res,$patterns[0]);
    255.     array_push($res,count($patterns[0]));
    256.     return $res;
    257. }
    258.  
    259. // подсчет используемых ключевых слов
    260. function countkeyword($word,$file){
    261.     $x = preg_match_all("/(.*)($word)))*)/",$file,$patterns);
    262.     return count($patterns);
    263. }
    264.  
    265. // получение всех внутренных ссылок сайта
    266. function get_internal_links($array){
    267.     $result = array();
    268.     $count = count($array);
    269.         for($i=0;$i<$count;$i++){
    270.             if(!empty($array[$i])){        
    271.                 if(strpos($array[$i],"www",0) === false){
    272.                     if(strpos($array[$i],"http",0) === false){                    
    273.                         array_push($result,$array[$i]);
    274.                     }
    275.                 }
    276.             }
    277.         }
    278.     return $result;
    279. }
    280.  
    281. // получение всех внешних ссылок сайта
    282. function get_external_links($array){
    283.     $result = array();
    284.     $count = count($array);
    285.         for($i=0;$i<$count;$i++){
    286.             if(!empty($array[$i])){        
    287.                 if(strpos($array[$i],"www",0) !== false){
    288.                     if(strpos($array[$i],"http",0) !== false){                    
    289.                         array_push($result,$array[$i]);
    290.                     }
    291.                 }
    292.             }
    293.         }
    294.     return $result;
    295. }
    296.  
    297. // получение главного урла сайта
    298. function get_main_url($url){
    299.     $parts = parse_url($url);
    300.     $url = $parts["scheme"] ."://".$parts["host"];
    301.     return $url;
    302. }
    303.  
    304. // получение всех доменного имени без ввв и хвоста
    305. function get_domain_name_only($url){
    306.     $match = preg_match("/(.*:\/\/)\w{0,}(.*)\...*)/",$url,$patterns);
    307.     $patterns[2] = str_replace(".","",$patterns[2]);
    308.     return $patterns[2];
    309. }
    310.  
    311. //Выдирание всех форм из документа
    312. function getforms($document)  {    
    313.     $elements = array();
    314.  
    315.     preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(((2)))*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
    316.        
    317.     $match = implode("\r\n",$elements[0]);
    318.     return $match;
    319. }
    320. ?>
    Ну может кому пригодится это всё:) Простите,если где-то уже есть такая тема О_о
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?