Crawler

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Подскажите пожалуйста, как спарсить со страницы урлы вида
Т.е. спарсить урлы определённой директории "dir", и ещё, чтобы слова после директории были только с нижним подчёркиванием, и нижнее подчёркивание должно встречаться не менее 2х раз.
 
Если знак '-' может быть в название директории (а в принципе может), тогда так:
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);
 
Не помогло.
Символов "_" не менее двух, т.е. может быть и больше. Может в этом загвоздка?
 
Тестил на этом:
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 символа "_" и больше.
Результат:
Array ( [0] => Array ( [0] => Для просмотра ссылки Войди или Зарегистрируйся [1] => Для просмотра ссылки Войди или Зарегистрируйся [2] => Для просмотра ссылки Войди или Зарегистрируйся ) )
Ты ожидаешь увидеть весь урл?
 
Да. Весь урл.
P.S.
Нашёл ошибку.
Там в некоторых случаях стоит www
Просто две регулярки делаю.
С ввв и без них.
 
Зачем две регулярки? Держи "в одном флаконе":
PHP:
preg_match_all('%http://(?:www\.|)domain\.com/dir/[a-z0-9-]*_[a-z0-9-]*_[\w-]*/%i', $html, $matches);
print_r($matches);
Я просто сам новичек в этом деле, посмотрел только на урл в примере, не учел "www".
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху