Вы не зашли.
учимся писать граб. Счего начать.?
#2.
TLENS
Off
(14)
Moderator
2011.05.11 21:09
Ты шаришь хоть немного в пыхе?
ну немного если ток немного
#4.
TLENS
Off
(14)
Moderator
2011.05.11 21:09
Корочь возьмем простую страничку например погода в киеве
#6.
TLENS
Off
(14)
Moderator
2011.05.11 21:09
Граб основан на том он как браузер получает код обрабатывает и отображает.
Код:
span style="color: #0000BB"><?php// Первое нам надо определить что надо качать// Но определять мы не будем просто для начала впишем адрес так как страничка будет одна грабится$url = 'http://m.gismeteo.ua/weather/4944/';// И получаем HTML код в переменную. $f стандартной функцией file_get_contents$f = file_get_contents($url);// теперь у нас в переменной содершится исходный код страницы// Проверим echo выводит текст со скрипта в браузерecho $f;?> |
Добавлено спустя 2 минуты 8 секунд: Проблема нет стилей и не отображаются картинки так?
Добавлено спустя 6 минут 12 секунд: это п тому что там такой html код его можно увидеть вункцией highlight_string
Код:
span style="color: #0000BB"><?php// Первое нам надо определить что надо качать// Но определять мы не будем просто для начала впишем адрес так как страничка будет одна грабится$url = 'http://m.gismeteo.ua/weather/4944/';// И получаем HTML код в переменную. $f стандартной функцией file_get_contents$f = file_get_contents($url);// теперь у нас в переменной содершится исходный код страницы// Проверим echo выводит текст со скрипта в браузерecho $f;//вставим разделительecho '<hr />';//и покажем код чтобы браузер не читал его это для нас чтоб видно было что вырезатьhighlight_string($f);?> |
Отредактировано TLENS (2011.05.11 22:10)
#7.
TLENS
Off
(14)
Moderator
2011.05.11 22:10
Дале надо заменить адреса картинок
заменять будем функцией str_replace('Что заменить','На что заменить','Из чего заменить т.е. текст (наш html код)');
Код:
span style="color: #0000BB"><?php// Первое нам надо определить что надо качать// Но определять мы не будем просто для начала впишем адрес так как страничка будет одна грабится$url = 'http://m.gismeteo.ua/weather/4944/';// И получаем HTML код в переменную. $f стандартной функцией file_get_contents$f = file_get_contents($url);// теперь у нас в переменной содершится исходный код страницы// Проверим echo выводит текст со скрипта в браузер$f = str_replace('src="/','src="http://m.gismeteo.ua/',$f);echo $f;//вставим разделительecho '<hr />';//и покажем код чтобы браузер не читал его это для нас чтоб видно было что вырезатьhighlight_string($f);?> |
Попробуй появлятся картинки?
Отредактировано TLENS (2011.05.11 22:10)
так. С этим подразобрался вроде.
#9.
TLENS
Off
(14)
Moderator
2011.05.11 22:10
Ну понял почему картинки начали отображатся?
Там в мы получили такой код картинок
<img width="55" height="55" alt="Ясно" src="/static/images/icons/new/n.moon.png" />
когда мы заменили src="/ на src="http://m.gismeteo.ua/
И у нас получилось html
<img width="55" height="55" alt="Ясно" src="http://m.gismeteo.ua/static/images/icons/new/n.moon.png" />
Отредактировано TLENS (2011.05.11 22:10)
это тоже разобрал. Потом еще закреплю практикой.
#11.
TLENS
Off
(14)
Moderator
2011.05.11 22:10
Ну значет дам задачку какой php код надо вставить чтобы отобразились css стили
Добавлено спустя 5 минут 51 секунду: Подсказка нужна?
Отредактировано TLENS (2011.05.11 22:10)
ага. Также как и с кортинками только меняется путь на путь к css
#13.
TLENS
Off
(14)
Moderator
2011.05.11 22:10
Прогрес теперь строку в студию как ты это сделаешь
#14.
TLENS
Off
(14)
Moderator
2011.05.11 22:10
Корочь не продолжу пока не увижу код
домой приду с компа попробую набросать.
#16.
TLENS
Off
(14)
Moderator
2011.05.12 00:12
Ок
TLENS, загружает браузер CSS, прочтя это(допустим) <link rel="stylesheet" href="/style.css" type="text/css"/>. Как было выше сказано, poisen, нужно изменить путь, нужно указать браузеру тот CSS, который есть. Меняем:
Код:
span style="color: #0000BB"><?php$url = 'http://m.gismeteo.ua/weather/4944/';$f = file_get_contents($url);$f = str_replace('src="/','src="http://m.gismeteo.ua/',$f);$f = str_replace('<link rel="stylesheet" href="','<link rel="stylesheet" href="http://m.gismeteo.ua',$f); //Меняем путь к CSSecho $f;echo '<hr />';highlight_string($f);?> |
Отредактировано DarkRiDDeR (2011.05.12 12:12)
#18.
TLENS
Off
(14)
Moderator
2011.05.12 12:12
DarkRiDDeRА ты не подсказуй
Кажись я не в темку попал, извенясь,

.
Ладн, моя задач:
обрезать всё до тега <body> включительно. Ведь зачем нам чужие заголовки и мета-теги, и т.п.? Ну и напоследок тег </bodу> нейтрализовать. Не будет же он болтаться на морде, как кусок ненужной кожи.
#20.
TLENS
Off
(14)
Moderator
2011.05.12 14:02
Но это потом он в регулярках не шарит
Код:
span style="color: #0000BB"><?php$xml = new SimpleXMLElement('http://wapinet.ru/', null, true);echo $xml->body[0]->asXML(); |
#22.
TLENS
Off
(14)
Moderator
2011.05.12 15:03
А хотя и сейчас познакомимся с ними.
вообщем даю кусочек кода он будет у тебя шаблоном пожже будешь писать боле быстрые регулярки.
например нам надо вырезать неизвесный текст
мы берем текст начало и конец извесного.
вырезать заголовки html начиная с <head> и заканчивая </head>
будешь использовать preg_replace
Код:
lt;?$f = preg_replace('/<head>.*?<\/head>/s','',$f); |
где .*? это неизвесный текст
Наверное заметил я поставил обратный слеш \ перед слешем
Это для того чтобы заэкранировать спец символ /
спец символы это те символы которые использует выражения
их много приведу популярные \^ $ . [ ] | ( ) ? * + { } / ^
их надо экранировать в нашем случае.
например если нам надо вырезать ссылку с неизвесным текстом тот что меняется скриптом
допустим <a href="http://wapinet.ru/ne_izvesnuy_text">ne_izvesnuy_text</a>
чтобы вырезать такую ссылку надо применить preg_replace('/<a href="http:\/\/wapinet\.ru\/.*?">.*?<\/a>/s','',$f);
Добавлено спустя 4 минуты 8 секунд: Gemorroj написал:Код:
span style="color: #0000BB"><?php$xml = new SimpleXMLElement('http://wapinet.ru/', null, true);echo $xml->body[0]->asXML(); |
Ну можно и так хотя я ниразу так не делал.
Я воще последнее время все по масивам расбиваю и выводится как свой а вообще если чесно то все по базам пару последних скриптов
TLENS, можно вырезать и без регулярок, что я выше написал. Подсказка: массивы
Хороший пример! И главное я вкуриваю потихоньку

. А как будет выризатся поле с отображением линка до файла?
Есть <a href="http://wapinet.ru/ne_izvesnuy_text">ne_izvesnuy_text</a>
Вырезаем (если правильно понял):
Код:
preg_replace('#(<a href=")http:\/\/wapinet\.ru\/(.*?">.*?<\/a>)#is', '$0', $f); //Останется <a href="ne_izvesnuy_text">ne_izvesnuy_text</a> |
Можно вырезать и по другому, много способом. Ну пока ладно. Короче, что в скобках, сравни с предыдущим примером, как бы сохраняется в переменных по очереди. $1 - <a href=", $2 - .*?">.*?<\/a>. $0 - это всё сохранённое, а именно: <a href=".*?">.*?<\/a>
Ага... Так сейчас попробую .
http://fank.ru/foto/category/s/13/
вот что выходит
http://xmxx.ru/video2/video4/
выризал что смог
как правельно исправить чтобы перети к фото и вырезать альбомы
$inf = str_replace('<a href="/foto/data/s/">[v]</a>','<a href="http://fank.ru/foto/s/">Смотреть</a>',$inf);
$inf = str_replace('/<a href="http:\/\/fank\.ru\/foto\/album\/u\/.*?">.*?<\/a>/s','',$inf);
а в целом вот
Код:
span style="color: #0000BB"><?php//ob_start(); // включаем буферизацию$conn = curl_init(); // создаём новое curl подключениеcurl_setopt($conn, CURLOPT_URL, "http://fank.ru/foto/category/s/13/?".$_SERVER['QUERY_STRING']); // подключаемся по по ссылкеcurl_setopt($conn, CURLOPT_RETURNTRANSFER, 1); // возвращаем полученные данные в ссылку (не печатаем)curl_setopt($conn, CURLOPT_USERAGENT, "Nokia2630/2.0 (04.90) Profile/MIDP-2.1 Configuration/CLDC-1.1"); // маскеруемся под юзер-агент$inf = curl_exec($conn); // получаем данные в переменную $infcurl_close($conn); // закрываем соединение$inf = preg_replace('~<\?xml version=(.+)<body>~is', '', $inf); // убираем шапку документа$inf = preg_replace('~<div class="header"><a href="http://fank.ru/"><img src="http://i.fank.ru/i/d0/ru/logo_foto.gif" width="120" height="34" alt="" /></a></div>~isu', '', $inf);$inf = preg_replace('~<div class="body">Language: <img src="http://i.fank.ru/i/d0/flag_en.gif" alt="" /> <a href="http://fank.mobi/">en</a> | <img src="http://i.fank.ru/i/d0/flag_ru.gif" alt="" /> ru*<br/></div>~isu', '', $inf);$inf = str_replace('<a href="http://waplog.net/ru/c.shtml?13"><img src="http://c.waplog.net/ru/13.cnt" alt="waplog"/></a>', '', $inf);$inf = preg_replace('|<div class="downban">(.*?)</div>|is','</div>',$inf);$inf = str_replace('<img src="/f/', '<img src="http://f1.fank.ru/f/', $inf); // исправляем ссылку на скриншот$inf = str_replace('<a href="/foto/data/s/">[v]</a>','<a href="http://fank.ru/foto/s/">Смотреть</a>',$inf);$inf = str_replace('<a href="/foto/data/s/', '<a href="http://fank.ru/foto/data/s/', $inf);$inf = str_replace('/<a href="http:\/\/fank\.ru\/foto\/album\/u\/.*?">.*?<\/a>/s','',$inf);$inf = str_replace('<a href="/foto/category/s/13/', '<a href="http://fank.ru/foto/category/s/13/', $inf);$inf = str_replace('<div class="box">', '<div class="ok">', $inf); // изменяем под стили блок$inf = str_replace('<div class="m">', '<div class="main">', $inf); // изменяем под стили блокinclude '../header.php'; // подключаем шапку документаecho $inf; // выводим на печать отредактированные данныеinclude '../footer.php'; // подключаем низ документа?> |
Отредактировано poisen (2011.05.29 08:08)
preg_match('#<body>(.*?)</body>#si', file_get_contents('http://wapinet.ru/'), $body);
echo $body[1]; // выведет все, что находится между тегами body
и ненад вырезать всякие тэги
#29.
N1ck
Off
(0)
Участник
2011.10.27 16:04
<!--LiveInternet logo--><a href="http://www.liveinternet.ru/ click" 43. target="_blank"><img src="// counter.yadro.ru/logo?26.10" 44. title="LiveInternet: показано число посетителей за сегодня" 45. alt="" border="0" width="88" height="15"/></a><!--/ LiveInternet--> как ето вирежат в грабере?
Я маргал 'сука' , не качай головой!
DarkRiDDeR написал:Кажись я не в темку попал, извенясь,

.
Ладн, моя задач:
обрезать всё до тега <body> включительно. Ведь зачем нам чужие заголовки и мета-теги, и т.п.? Ну и напоследок тег </bodу> нейтрализовать. Не будет же он болтаться на морде, как кусок ненужной кожи.
Код:
span style="color: #0000BB"><?php$array = explode('<body>', $html); //не помню включительно или нет.$body = str_replace('</body>', null, $array[1]); //если надо, хотя зачем? Обычно же бывает </body></html>?> |
Swinger написал:
preg_match('#<body>(.*?)</body>#si', file_get_contents('http://wapinet.ru/'), $body);
echo $body[1]; // выведет все, что находится между тегами body
и ненад вырезать всякие тэги
True вариант

Надо еще Геморроя вариант посмотреть, как он работает.
Отредактировано tipsun (2011.10.29 17:05)
а как в граббе поставить определение кодировки текста той страницы которую мы граббим? а то по примеру написал грабб севера,а там фигня с текстом((
Вложения
пример.png
16kb
{704x779}
[
загрузок: 769]
сам определи и конвертируй как тебе нужно.
Gemorrojсам определить я могу,но как это написать не знаю(
POFIGISST, или сам определи или функцией.
И конвертируй
mb_convert_encoding()
Отредактировано tipsun (2011.10.29 18:06)
спасибо,разобрался,теперь нормик текст выводит))
мое Г
Код:
span style="color: #0000BB"><?php$url = 'http://sever.ru';$f = file_get_contents($url);$f = str_replace('src="/','src="http://sever.ru/',$f);$f = str_replace('src="1.gif','src="http://sever.ru/1.gif',$f);$f = mb_convert_encoding($f, "HTML-ENTITIES", "UTF-8"); $f = preg_replace('/<div class="v4_new">.*?<\/div>/s','',$f);$f = preg_replace('/<div class="reklama_new4">.*?<\/div>/s','',$f);$f = str_replace('Sever.Ru','Test12.Ru',$f);echo $f;?> |
на денвере делал,поэтому копирайт Test12.Ru ))
facepalm HTML-ENTITIES.
на удаленном сервере и так utf-8. подозреваю что у тебя отдается неверная кодировка сервером.
Gemorroj написал:
facepalm HTML-ENTITIES.
на удаленном сервере и так utf-8. подозреваю что у тебя отдается неверная кодировка сервером.
я на денвере смотрел,так что возможно,на хост не ставил)))
какя разница, денвер - не денвер?? настрой свой денвер нормально.
Gemorroj написал:
какя разница, денвер - не денвер?? настрой свой денвер нормально.
Попробую настроить,спс за совет))
#41.
N1ck
Off
(0)
Участник
2011.10.31 17:05
N1ck написал:
<!--LiveInternet logo--><a href="http://www.liveinternet.ru/ click" 43. target="_blank"><img src="// counter.yadro.ru/logo?26.10" 44. title="LiveInternet: показано число посетителей за сегодня" 45. alt="" border="0" width="88" height="15"/></a><!--/ LiveInternet--> как ето вирежат в грабере?
помогите плиз
Я маргал 'сука' , не качай головой!
N1ckкак то так это будет $f = preg_replace('/<!--LiveInternet logo-->(.*?)<!--/ LiveInternet-->/s','',$f);
З.Ы. возможно ошибка в вырезке,не проверял)
Отредактировано POFIGISST (2012.01.27 16:04)
Хочу написать грабб чартов
отсюда но пока не совсем выходит,а вернее совсем не выходит

вот такой код у меня сейчас идет
Код:
span style="color: #0000BB"><?phpinclude '../str/head.php';$cat = $_GET['cat'];$file = file_get_contents('http://muz.siza.us/tophit/'. (!empty($cat) ? $cat : ''));$file = str_replace('<a href="http://muz.siza.us/tophit/','<a href="?cat=',$file);$file=str_replace('<a href="?cat=listen/', '<a href="http://muz.siza.us/tophit/listen/', $file);$file=str_replace('<a href="?cat=get/', '<a href="http://muz.siza.us/tophit/', $file);$file=preg_replace('|<!DOCTYPE(.*?)<body>|is', '<div class="top"></div><div class="menu">', $file);$file=str_replace('<div class="line_d">', '<div class="line">', $file);$file=preg_replace('|<a href="http://muz.siza.us">(.*?)</a>|is', '<br/>', $file);$file=preg_replace('|<a href="http://siza.us">(.*?)</html>|is', '', $file);$file=str_replace('<div class="headerfan_b">', '<div class="line">', $file);$file=preg_replace('|<div class="div_center">(.*?)</div>|is', '</div>',$file);$file=preg_replace('|<div class="footer">(.*?)</div>|is', '</div>',$file);$file=preg_replace('|<div class="footer_b">(.*?)</div>|is', '</div>',$file);echo $file;include '../str/foot.php';?> |
вырезаю все лишнее(счетчики,реклама,и т.д.), делаю замену дивов на свои,графика идет с моего сайта( http://xporno.in/tophit/ ) ,но вот с навигацией у меня выходят проблемы,не работает она,и ссылки на чарты тоже нихера не работают,как это исправить? и какие замечания по коду есть?
по коду - не так.
там валидный xml. ты можешь парсить данные с помощью simplexml легко и не принужденно.
Gemorroj написал:
по коду - не так.
там валидный xml. ты можешь парсить данные с помощью simplexml легко и не принужденно.
Благодарю Паш,протрезвею почитаю инфу как делать через simplexml,не разу так не делал(( но обязательно сделаю
Здравствуйте, пишу граб поиска, все нормально работает, но когда подключаю шапку то скрины не показывает, попробывал разные шапки но всеровно бестольку.
Скажите пожалуйста, в чем проблема и как его решить?
Вот индексный файл:
Код:
span style="color: #0000BB"><?phpinclude 'head.php';if($_GET['img']){$fayl=htmlspecialchars($_GET['img']);$file=file_get_contens("http://tubidy.mobi/".$fayl."?".$_SERVER['QUERY_STRING']);echo $file;}$ch = curl_init("http://tubidy.mobi/search.php?".$_SERVER['QUERY_STRING']);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/html, application/xml, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;', 'Accept-Language: ru, en, *;', 'Accept-Charset: iso-8859-1, utf-8, utf-16, *;', 'Accept-Encoding: identity;', 'Connection: close'));curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');curl_setopt($ch, CURLOPT_POST, 0);curl_setopt($ch, CURLOPT_REFERER, 'http://tubidy.mobi/');$file = curl_exec($ch);curl_close($ch);$file=preg_replace('|<!DOCTYPE(.*?)<div id="search_box">|si','<div class="menu">',$file);$file=preg_replace('|<a class="tsm"(.*?)</html>|si','',$file);$file=preg_replace('|<div id="nav_foot">(.*?)</html>|si','',$file);$file=str_replace('/search.php','search.php',$file);$file=str_replace('src="/thumbs','src="?img=thumbs',$file);$file=str_replace('<?xml version="1.0" encoding="utf-8"?>','',$file);echo $file;include 'foot.php';?> |
Например вот:
Код:
lt;?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><title>Search</title></head><body><div> |
мож у тя адрес include не правильно прописан?
Да все правильно, просто вот такая ощибка.
А вы попробуйте у себя, можеть что-то получиться.
Karayazi, если я не ошибаюсь, то банально надо просто подставить исходный адрес изображения
Код:
span style="color: #0000BB"><?php$html = str_replace('<img src="', '<img src="http://site.ru/image_dir/', $html);//Конкретно в твоем случае:$file=str_replace('src="','src="http://tubidy.mobi/',$file);//или через preg_replace |
Отредактировано tipsun (2012.03.05 13:01)
tipsun я этого знаю, но хочу маскировать адрес изображений под свой сайт.
Можеть есть какой-то другой вариант?
Через файл можно.
http://mysite.ru/image.php?img=address
Код:
span style="color: #0000BB"><?phpheader('Content-Type: image/jpeg'); // png/gif@readfile('http://trololo.ru/img_dir/' . $_GET['img']); |
tipsun спасибо большое, помогло.