Просмотр полной версии : Parser определенных ссылок ?
Привет всем вот накопал парсер
<?php
$code = file_get_contents('http://site.com');
preg_match_all('#href=[\'"]([^\'"]+)[\'"]#i', $code, $matches);
echo '<pre>'.print_r($matches[1], true);
?>
Он выдерает ссылки.
Как мне сделать так что бы он выдерал определенные ссылки ? а не все подряд к пример ссылку типа
<a href=example.com>HELLO WORLD</a>
а все остальные ссылки не трогал ? реально ли такое ?
wildshaman
30.06.2009, 11:52
Определенные - это какие?
ставь условие и проверяй то что тебе нужно
Так я не шарю в этом вообще я на уровне пользователя PHP понимаю..
Определенные это мне нужно пропарисить сайт или документ и вывести все
ссылки
<a href=example.com>HELLO WORLD</a>
А лучше так ( Находим только ссылку Example.com удаляем ее и оставляем только HELLO WORLD..
Можно так ? что бы находило определенную ссылку и выводило только слово HELLO WORLD без ссылки ?
wildshaman
30.06.2009, 12:11
<?php
$site=file_get_contents('http://yandex.ru');
preg_match_all('|<a href="(.*?)">(.*?)</a>|is', $site, $out);
print_r($out[2]);
?>
tc
BrainDeaD
30.06.2009, 12:14
preg_match_all('#href=example.com>(HELLO WORLD)#', $code, $matches);
echo $matches[1];
можно в обычном блокноте сделать замену в исходнике
<a href=example.com> на пусто или чтото другое
после парсинга конешн
BrainDeaD
30.06.2009, 12:20
зачем? если так как я написал, он выдирает только текст.
А оно будет выдавать по разному ?? ибо там где HELLO WORLD идет вида
HELLO WORLD1
HELLO WORLD2
WORLD HELLO4
Wildshaman
<?php
$site=file_get_contents('http://yandex.ru');
preg_match_all('|<a href="(.*?)">(.*?)</a>|is', $site, $out);
print_r($out[2]);
?>
Вырезает то что нужно...
Мне нужно вот как отсеить
<a href=example.com>Любой текст</a>
Пропарсить только example.com ссылки и вывести только (Любой текст)
BrainDeaD
30.06.2009, 12:40
preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
Напишите полный код ! у меня не работает .т.е не чег оне выводит !!!
<?php
$code=file_get_contents('site.com');
preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)#', $code, $matches);
echo $matches[1];
?>
Не роботает.
BrainDeaD
30.06.2009, 12:49
да, я кое что забыл. испарвил предыдущий пост. попробуй ещё раз с исправленым
или попробуй так. остальной код у тебя ок.
preg_match_all('#href=example.com>(.*)#', $code, $matches);
<?php
$code=file_get_contents('site.com');
preg_match_all('#href=example.com>(.*)#', $code, $matches);
echo $matches[1];
?>
Выводит только Array
BrainDeaD
30.06.2009, 12:59
бля опять забыл закрыть тег (((
preg_match_all('#href=example.com>(.*)</a>#', $code, $matches);
а как с другим исправленным вариантом?
preg_match_all('#href=example.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
wildshaman
30.06.2009, 13:04
<?php
$code=file_get_contents('site.com');
preg_match_all('#href=example.com>(.*)#', $code, $matches);
echo $matches[1];
?>
Выводит только Array
print_r($matches[1]);
И воообще, напиши из чего что должно получаться.
<?php
$code=file_get_contents('http://site.com');
preg_match_all('#href=site.write.com>([a-zA-Z0-9_-]*)</a>#', $code, $matches);
print_r($matches[1]);
?>
Не Работает не знаш шо вы там мутите мне массив пустой вылетает !
Может потому что сайт www.site.in.com две точки ? .in.com ?
Есть определенные ссылки в странице <a href=www.site.in.com>QWERT</a>
Мне нужно пропарисить только ссылки с именем www.site.in.com bи вывести только QWERTY (вместо QWERT может быть любой текст)
BrainDeaD
30.06.2009, 13:14
да всё понятно. мы ничего не мутим. или на сайте нет ссылок или они ни в тегах или ты неправильно адрес задаёш. дай реальный адрес сайта, я проверю. можно в личку
Я проверял на 3 сайтах де есть ссылки не работает проверь ты если у тя денвер стоит
Ну вот. ) в тупике все )))
ghostwizard
30.06.2009, 13:47
1. [a-zA-Z0-9_-]* с кириллицей не прокатит.
2. Не забываем про кавычки при парсинге.
3. Линки есть и c http://
Вот так должно работать с выборкой по сайту
preg_match_all('#href=[\'"](.*)mysite.com(.*)[\'"]#i', $code, $matches); # любой линк вида mysite.com/blabla/i.html, http://mysite.com, mysite.com
preg_match_all('#href=[\'"](.*)mysite.com[\'"]#i', $code, $matches); # любой линк http://mysite.com или mysite.com
<?php
$code=file_get_contents('http://www.in.com/?utm_source=redirect&utm_medium=in.com');
preg_match_all('/<a href.*>(.*)<\/a>/', $code, $matches);
echo "<pre>";
print_r ($matches);
echo "<pre>";
?>
preg_match_all('#href=[\'"](.*)mysite.com(.*)[\'"]#i', $code, $matches);
Этот работает только он почемуто выдирает с картинаками
http://site.in.com/blablabla/"><img src="http://site.in.com/blablabla" alt="Nameofimages">
Как убрать картинки ? А так все классно то что надо !! ghostwizard
Мне можеш дать ссылку где об этом почитать что бы усовершенсвовать можно было ?
т.е я почитаю и буду сам потом эксперементировать ты мне помог с самым начало ибо я в php только на уровне кода там модифицировать что то заменить и так по мелочи а вот это для меня всегда был полный лес эти выражение чи шо там оно.. )
А если так ?
<a class="smallblu" href="http://site.in/blablalbla">qwerttt</a>
Если все выдереть после класса ??? то можно так может так будет проще мне чем искать все ссылки на странице ?
там разный классы для ссылок,так будет тянуть линки с одним классом.
<?php
$code=file_get_contents('http://forum.antichat.ru');
preg_match_all('/<a href=\".*">[^<img src.*](.*)<\/a>/', $code, $matches);
echo "<pre>";
print_r ($matches[0]);
echo "<pre>";
?>
ТС с вас бутылка.
BrainDeaD
30.06.2009, 16:49
Мне можеш дать ссылку где об этом почитать что бы усовершенсвовать можно было ?
т.е я почитаю и буду сам потом эксперементировать ты мне помог с самым начало ибо я в php только на уровне кода там модифицировать что то заменить и так по мелочи а вот это для меня всегда был полный лес эти выражение чи шо там оно.. )
http://www.phpfaq.ru/regexp
http://www.pcre.ru/
Слава богу там адин класс визде стоит .. те где нужно парсить там он и стоит )))
<a class="smallblu" href="http://site.in/blablalbla">qwerttt</a>
Класс стоит на всех мне нужных ссылках ))
Бутыка нет. если все получиться с мегя любая графическая работа. 2D 3D WEB DESIGN
Нет там что то не то с классами много мусора выводит... там класс стоит только где мне нужно а оно выводит то что нужно и плюсь еще пол контента.
Вот самый оптимальный вариант из ответов сдесь
<?php
$code=file_get_contents('http://site.com');
preg_match_all('#href=[\'"](.*)site.com.in(.*)[\'"]#i', $code, $matches);
print_r($matches[1]);
?>
Выводит
[6] => http://site.com.in/blablabla/?top=1"><img src="http://site.com.in" alt="BLABLABLA"></a>
Так вот . Это бла бля бла есть в АЛЬТЕ ! т.е текс цены который мне нужен етьс в АЛЬТЕ картинки..
Так вот (Если чесно у мя башка уже разрываеться..)))
Мне надо это BLABLABLA вытащить чистым в столбик ...
Уже не знаю как обьяснить но самый оптимальный вариаент это
wildshaman
30.06.2009, 18:01
Скажи сайт, с которого парсить надо.
http://digiland.libero.it/ricerca_persone.php
Там смотри есть 8 картинок с именами вот те имена мне и нужны без картинок в столбик.
Уже задолбался ото не знаю языка а потом как приспичит шо то сделать сидиш голова разрываеться ))) от непонимание этих регуляров.. я с ними 1 раз просто сталкиваюсь..
Так что ли?
$content = file_get_contents('http://digiland.libero.it/ricerca_persone.php');
preg_match_all('/114" alt="(.+?)"><\/a>/', $content, $match);
foreach ($match[1] as $name)
{
print $name."<br>";
}
ДАААААААААААААААААААААА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
preg_match_all('/114" alt="(.+?)"><\/a>/', $content, $match);
А можеш чуть чуть разьяснить что ты сделал ?
Ище и написал так чтоли ? )) типа раз два и сделал ))) ну это для тебя кто знает ))) тому просто )))
FireFenix
30.06.2009, 18:28
/114" alt="(.+?)"><\/a>/ - ищет все вхождение текста 114" alt="текст"></a>, где в параметре alt 1 или более симолов
О хитрюга необыкновенус 114 это высота т.е я так понял альт будет не какой папало а в каком есть значение height-114 =)))
Будем разбераца.
Я просто хочу парсер ников в коммунити сделать.
В бущем будет 2 проблема...
Ведь парсер когда парсит он только заданный URL ? а как задать ему что бы он пропарисил скажем 100 урл ? Если это реально
FireFenix
30.06.2009, 19:50
В бущем будет 2 проблема...
Ведь парсер когда парсит он только заданный URL ? а как задать ему что бы он пропарисил скажем 100 урл ? Если это реально
Что сложного? складываешь урлы в файл, или в коде в массив .... Потом достаёшь в массив (если в файле) и в цикле перебираешь. Типа
<?php
$urls = file('url_list.txt');
foreach ($urls as $key => $url)
{
$content = file_get_conten($url);
//тут релугярка + обработка найденного
}
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot