За последние 24 часа нас посетил 16951 программист и 1276 роботов. Сейчас ищут 1423 программиста ...

при парсинге в строку с урлом попадает всякий мусор

Тема в разделе "Регулярные выражения", создана пользователем zhito, 4 мар 2008.

  1. zhito

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

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    всем доброго времени суток!
    вместо списка урлов может просочиться такая например строчка
    http://www.luxpotolok.ru. �������� �� Joomla! ..." href=http:/
    подскажите плз что в патерне поправить чтоб только урлы на выходе были?


    Код (Text):
    1.  
    2. $result = parse_serp("google", "новые технологии");
    3. $x=0;
    4. foreach($result as $v)
    5. {
    6.     echo '<br>' .$v;
    7. }
    8.  
    9.  
    10.     function parse_serp($engine, $query)
    11.     {
    12.         switch (strtolower($engine))
    13.         {
    14.             case 'google':
    15.                 $request = 'http://www.google.com/ie?hl=en&num=100&start=0&lr=&q='.urlencode(trim($query));
    16.             $pattern = '/http:\/\/(.+)\//isU';
    17.             $result = file_get_contents($request);
    18.                  if(preg_match_all($pattern, $result, $matches))
    19.                 {
    20.                             for ($i=0; $i<count($matches[0]); $i++)
    21.                             {
    22.                                 $link = $matches[0][$i];
    23.                                 $serp[] = $link;
    24.                             }
    25.                         }
    26.                 break;
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Не находишь связь?
    Код (Text):
    1. http:\/\/(\S+)\/
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  4. zhito

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

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    огромное спасибо!
    но остались еще вопросы :)
    задача - получить содержимое в теге <td class="556677" width="100%">
    что-то опять наверное напутал т.к. получаю пустой массив :(

    $request = 'http://hghghg.ru';
    $pattern = '/<td\s*class=\"556677\"\s*width=\"100\%\">(.*)<\/td>/is';
    $result = file_get_contents($request);
    if(preg_match_all($pattern, $result, $matches))
    {

    echo $matches[0][0] ;

    }
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
     
  7. zhito

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

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    а тут оказывается часть страницы формируется функцией document.write
    выглядит это примерно так:
    Код (Text):
    1. <script>document.write(two('hjkhjkhjkhjhJKHKJHJKhjkhJKHJKHJKH'));</script>
    как ее содержимое можно разкодировать?
     
  8. zhito

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

    С нами с:
    4 мар 2008
    Сообщения:
    25
    Симпатии:
    0
    неужели проблемотично?
    что ж защиту от парсинга тоже полезно знать :)