Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Parser определенных ссылок ? (https://forum.antichat.xyz/showthread.php?t=127612)

Adio 30.06.2009 11:38

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

Определенные - это какие?

XopoIII 30.06.2009 11:54

ставь условие и проверяй то что тебе нужно

Adio 30.06.2009 12:08

Так я не шарю в этом вообще я на уровне пользователя PHP понимаю..

Определенные это мне нужно пропарисить сайт или документ и вывести все
ссылки

<a href=example.com>HELLO WORLD</a>

А лучше так ( Находим только ссылку Example.com удаляем ее и оставляем только HELLO WORLD..

Можно так ? что бы находило определенную ссылку и выводило только слово HELLO WORLD без ссылки ?

wildshaman 30.06.2009 12:11

PHP код:

<?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];

!TNK! 30.06.2009 12:18

можно в обычном блокноте сделать замену в исходнике
<a href=example.com> на пусто или чтото другое
после парсинга конешн

BrainDeaD 30.06.2009 12:20

зачем? если так как я написал, он выдирает только текст.

Adio 30.06.2009 12:33

А оно будет выдавать по разному ?? ибо там где 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);

Adio 30.06.2009 12:48

Напишите полный код ! у меня не работает .т.е не чег оне выводит !!!

<?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);

Adio 30.06.2009 12:54

<?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

Цитата:

Сообщение от Adio
<?php
$code=file_get_contents('site.com');
preg_match_all('#href=example.com>(.*)#', $code, $matches);
echo $matches[1];
?>


Выводит только Array

print_r($matches[1]);

И воообще, напиши из чего что должно получаться.

Adio 30.06.2009 13:10

<?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

да всё понятно. мы ничего не мутим. или на сайте нет ссылок или они ни в тегах или ты неправильно адрес задаёш. дай реальный адрес сайта, я проверю. можно в личку

Adio 30.06.2009 13:18

Я проверял на 3 сайтах де есть ссылки не работает проверь ты если у тя денвер стоит

Adio 30.06.2009 13:47

Ну вот. ) в тупике все )))

ghostwizard 30.06.2009 13:47

1. [a-zA-Z0-9_-]* с кириллицей не прокатит.
2. Не забываем про кавычки при парсинге.
3. Линки есть и c http://

Вот так должно работать с выборкой по сайту

PHP код:

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 


L I G A 30.06.2009 13:47

PHP код:

<?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>";
?>


Adio 30.06.2009 14:01

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 только на уровне кода там модифицировать что то заменить и так по мелочи а вот это для меня всегда был полный лес эти выражение чи шо там оно.. )

Adio 30.06.2009 14:51

А если так ?

<a class="smallblu" href="http://site.in/blablalbla">qwerttt</a>

Если все выдереть после класса ??? то можно так может так будет проще мне чем искать все ссылки на странице ?

L I G A 30.06.2009 16:02

там разный классы для ссылок,так будет тянуть линки с одним классом.

L I G A 30.06.2009 16:16

PHP код:

<?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

Цитата:

Сообщение от Adio
Мне можеш дать ссылку где об этом почитать что бы усовершенсвовать можно было ?
т.е я почитаю и буду сам потом эксперементировать ты мне помог с самым начало ибо я в php только на уровне кода там модифицировать что то заменить и так по мелочи а вот это для меня всегда был полный лес эти выражение чи шо там оно.. )

http://www.phpfaq.ru/regexp
http://www.pcre.ru/

Adio 30.06.2009 17:20

Слава богу там адин класс визде стоит .. те где нужно парсить там он и стоит )))

<a class="smallblu" href="http://site.in/blablalbla">qwerttt</a>

Класс стоит на всех мне нужных ссылках ))

Бутыка нет. если все получиться с мегя любая графическая работа. 2D 3D WEB DESIGN

Adio 30.06.2009 17:48

Нет там что то не то с классами много мусора выводит... там класс стоит только где мне нужно а оно выводит то что нужно и плюсь еще пол контента.

Вот самый оптимальный вариант из ответов сдесь

<?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

Скажи сайт, с которого парсить надо.

Adio 30.06.2009 18:11

http://digiland.libero.it/ricerca_persone.php

Там смотри есть 8 картинок с именами вот те имена мне и нужны без картинок в столбик.

Adio 30.06.2009 18:13

Уже задолбался ото не знаю языка а потом как приспичит шо то сделать сидиш голова разрываеться ))) от непонимание этих регуляров.. я с ними 1 раз просто сталкиваюсь..

Kaimi 30.06.2009 18:19

Так что ли?
PHP код:

$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>";
    } 


Adio 30.06.2009 18:23

ДАААААААААААААААААААААА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

preg_match_all('/114" alt="(.+?)"><\/a>/', $content, $match);

А можеш чуть чуть разьяснить что ты сделал ?


Ище и написал так чтоли ? )) типа раз два и сделал ))) ну это для тебя кто знает ))) тому просто )))

FireFenix 30.06.2009 18:28

/114" alt="(.+?)"><\/a>/ - ищет все вхождение текста 114" alt="текст"></a>, где в параметре alt 1 или более симолов

Adio 30.06.2009 18:45

О хитрюга необыкновенус 114 это высота т.е я так понял альт будет не какой папало а в каком есть значение height-114 =)))

Будем разбераца.

Я просто хочу парсер ников в коммунити сделать.

В бущем будет 2 проблема...

Ведь парсер когда парсит он только заданный URL ? а как задать ему что бы он пропарисил скажем 100 урл ? Если это реально

FireFenix 30.06.2009 19:50

Цитата:

Сообщение от Adio
В бущем будет 2 проблема...
Ведь парсер когда парсит он только заданный URL ? а как задать ему что бы он пропарисил скажем 100 урл ? Если это реально

Что сложного? складываешь урлы в файл, или в коде в массив .... Потом достаёшь в массив (если в файле) и в цикле перебираешь. Типа
PHP код:

<?php
$urls 
file('url_list.txt');

foreach (
$urls as $key => $url)
{
  
$content file_get_conten($url);
  
//тут релугярка + обработка найденного
}
?>



Время: 13:24