Crawler

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 23 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Здравствуйте.
    Подскажите пожалуйста, как спарсить со страницы урлы вида
    Т.е. спарсить урлы определённой директории "dir", и ещё, чтобы слова после директории были только с нижним подчёркиванием, и нижнее подчёркивание должно встречаться не менее 2х раз.
     
  2. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Если знак '-' может быть в название директории (а в принципе может), тогда так:
    PHP:
    preg_match_all('|http://domain\.com/dir/[a-z0-9-]*_[a-z0-9-]*_[\w-]*/|i'$html$matches);
    print_r($matches);
    Если только буквы, цифры, и '_', тогда так:
    PHP:
    preg_match_all('|http://domain\.com/dir/[a-z0-9]*_[a-z0-9]*_\w*/|i'$html$matches);
    print_r($matches);
     
    LEXAlForpostl нравится это.
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Не помогло.
    Символов "_" не менее двух, т.е. может быть и больше. Может в этом загвоздка?
     
  4. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Тестил на этом:
    PHP:
    <?
    $html 'dsasa sadf sdf sdf sf sd fds fsd fs http://domain.com/dir/ne_znaaS-u_cAShto-AS/sdfsf sfsdf http://domain.com/dir/ne_zn-auchto/sd fsd http://domain.com/dir/n-ASe_z-n-_au_c-hto_sdfs_sdf-sdf_sdfsdf_/ fds http://domain.com/dir/ne_zn_auAS_chto_/ f ';
    preg_match_all('|http://domain\.com/dir/[a-z0-9-]*_[a-z0-9-]*_[\w-]*/|i'$html$matches);
    print_r($matches);
    ?>
    Срабатывало, т.е. ловило 2 символа "_" и больше.
    Результат:
    Ты ожидаешь увидеть весь урл?
     
  5. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Да. Весь урл.
    P.S.
    Нашёл ошибку.
    Там в некоторых случаях стоит www
    Просто две регулярки делаю.
    С ввв и без них.
     
  6. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Зачем две регулярки? Держи "в одном флаконе":
    PHP:
    preg_match_all('%http://(?:www\.|)domain\.com/dir/[a-z0-9-]*_[a-z0-9-]*_[\w-]*/%i'$html$matches);
    print_r($matches);
    Я просто сам новичек в этом деле, посмотрел только на урл в примере, не учел "www".
     
    LEXAlForpostl нравится это.
Статус темы:
Закрыта.