Вы не зашли.
Главная » PHP » учимся писать грабб
#1. poisen Off (0)
Участник
2011.05.12 01:01
учимся писать граб. Счего начать.?
#2. TLENS Off (14)
Moderator
2011.05.12 01:01
Ты шаришь хоть немного в пыхе?
#3. poisen Off (0)
Участник
2011.05.12 01:01
ну немного если ток немного smile
#4. TLENS Off (14)
Moderator
2011.05.12 01:01
Корочь возьмем простую страничку например погода в киеве
#5. poisen Off (0)
Участник
2011.05.12 01:01
ок
#6. TLENS Off (14)
Moderator
2011.05.12 01:01
Граб основан на том он как браузер получает код обрабатывает и отображает.
Код:
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.12 02:02)
#7. TLENS Off (14)
Moderator
2011.05.12 02:02
Дале надо заменить адреса картинок
заменять будем функцией 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.12 02:02)
#8. poisen Off (0)
Участник
2011.05.12 02:02
так. С этим подразобрался вроде.
#9. TLENS Off (14)
Moderator
2011.05.12 02:02
Ну понял почему картинки начали отображатся?
Там в мы получили такой код картинок
<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.12 02:02)
#10. poisen Off (0)
Участник
2011.05.12 02:02
это тоже разобрал. Потом еще закреплю практикой.
#11. TLENS Off (14)
Moderator
2011.05.12 02:02
Ну значет дам задачку какой php код надо вставить чтобы отобразились css стили
Добавлено спустя   5 минут  51 секунду:
Подсказка нужна?
Отредактировано TLENS (2011.05.12 02:02)
#12. poisen Off (0)
Участник
2011.05.12 02:02
ага. Также как и с кортинками только меняется путь на путь к css
#13. TLENS Off (14)
Moderator
2011.05.12 02:02
Прогрес теперь строку в студию как ты это сделаешь
#14. TLENS Off (14)
Moderator
2011.05.12 02:02
Корочь не продолжу пока не увижу код
#15. poisen Off (0)
Участник
2011.05.12 04:04
домой приду с компа попробую набросать.
#16. TLENS Off (14)
Moderator
2011.05.12 04:04
Ок
#17. DarkRiDDeR Off (4)
Участник
2011.05.12 16:04
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 16:04)
#18. TLENS Off (14)
Moderator
2011.05.12 16:04
DarkRiDDeR
А ты не подсказуй
#19. DarkRiDDeR Off (4)
Участник
2011.05.12 18:06
Кажись я не в темку попал, извенясь, smile.
Ладн, моя задач:
обрезать всё до тега <body> включительно. Ведь зачем нам чужие заголовки и мета-теги, и т.п.? Ну и напоследок тег </bodу> нейтрализовать. Не будет же он болтаться на морде, как кусок ненужной кожи.
#20. TLENS Off (14)
Moderator
2011.05.12 18:06
Но это потом он в регулярках не шарит
#21. Gemorroj Off (107)
Administrator
2011.05.12 18:06
Код:
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 19:07
А хотя и сейчас познакомимся с ними.
вообщем даю кусочек кода он будет у тебя шаблоном пожже будешь писать боле быстрые регулярки.
например нам надо вырезать неизвесный текст
мы берем текст начало и конец извесного.
вырезать заголовки 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();
Ну можно и так хотя я ниразу так не делал.
Я воще последнее время все по масивам расбиваю и выводится как свой а вообще если чесно то все по базам пару последних скриптов
#23. DarkRiDDeR Off (4)
Участник
2011.05.13 16:04
TLENS, можно вырезать и без регулярок, что я выше написал. Подсказка: массивы
#24. poisen Off (0)
Участник
2011.05.24 23:11
Хороший пример! И главное я вкуриваю потихоньку smile . А как будет выризатся поле с отображением линка до файла?
#25. DarkRiDDeR Off (4)
Участник
2011.05.27 15:03
Есть <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>
#26. poisen Off (0)
Участник
2011.05.29 09:09
Ага... Так сейчас попробую .
#27. poisen Off (0)
Участник
2011.05.29 12:12
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 12:12)
#28. Swinger Off (1)
Участник
2011.05.30 17:05
preg_match('#<body>(.*?)</body>#si', file_get_contents('http://wapinet.ru/'), $body);
echo $body[1]; // выведет все, что находится между тегами body
и ненад вырезать всякие тэги
#29. N1ck Off (0)
Участник
2011.10.27 20:08
<!--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-->  как ето вирежат в грабере?
Я маргал 'сука' , не качай головой!
#30. tipsun Off (19)
Moderator
2011.10.29 21:09
DarkRiDDeR написал:
Кажись я не в темку попал, извенясь, smile.
Ладн, моя задач:
обрезать всё до тега <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 вариант smile
Надо еще Геморроя вариант посмотреть, как он работает.
Отредактировано tipsun (2011.10.29 21:09)
#31. POFIGISST Off (6)
Участник
2011.10.29 21:09
а как в граббе поставить определение кодировки текста той страницы которую мы граббим? а то по примеру написал грабб севера,а там фигня с текстом((
Вложения
пример.png 16kb {704x779} [загрузок: 677]
#32. Gemorroj Off (107)
Administrator
2011.10.29 22:10
сам определи и конвертируй как тебе нужно.
#33. POFIGISST Off (6)
Участник
2011.10.29 22:10
Gemorroj
сам определить я могу,но как это написать не знаю(
#34. tipsun Off (19)
Moderator
2011.10.29 22:10
POFIGISST, или сам определи или функцией.
И конвертируй mb_convert_encoding()
Отредактировано tipsun (2011.10.29 22:10)
#35. POFIGISST Off (6)
Участник
2011.10.29 22:10
tipsun написал:
POFIGISST, или сам определи или функцией.
И конвертируй mb_convert_encoding()
спасибо,разобрался,теперь нормик текст выводит))
#36. POFIGISST Off (6)
Участник
2011.10.29 23:11
мое Г

Код:
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 ))
#37. Gemorroj Off (107)
Administrator
2011.10.30 10:10
facepalm HTML-ENTITIES.
на удаленном сервере и так utf-8. подозреваю что у тебя отдается неверная кодировка сервером.
#38. POFIGISST Off (6)
Участник
2011.10.30 13:01
Gemorroj написал:
facepalm HTML-ENTITIES.
на удаленном сервере и так utf-8. подозреваю что у тебя отдается неверная кодировка сервером.
я на денвере смотрел,так что возможно,на хост не ставил)))
#39. Gemorroj Off (107)
Administrator
2011.10.30 14:02
какя разница, денвер - не денвер?? настрой свой денвер нормально.
#40. POFIGISST Off (6)
Участник
2011.10.30 14:02
Gemorroj написал:
какя разница, денвер - не денвер?? настрой свой денвер нормально.
Попробую настроить,спс за совет))
#41. N1ck Off (0)
Участник
2011.10.31 21:09
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-->  как ето вирежат в грабере?
помогите плиз
Я маргал 'сука' , не качай головой!
#42. POFIGISST Off (6)
Участник
2011.10.31 22:10
N1ck
как то так это будет $f = preg_replace('/<!--LiveInternet logo-->(.*?)<!--/ LiveInternet-->/s','',$f);

З.Ы. возможно ошибка в вырезке,не проверял)
Отредактировано POFIGISST (2012.01.27 20:08)
#43. POFIGISST Off (6)
Участник
2012.01.27 20:08
Хочу написать грабб чартов отсюда но пока не совсем выходит,а вернее совсем не выходитbig_smile

вот такой код у меня сейчас идет

Код:
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/ ) ,но вот с навигацией у меня выходят проблемы,не работает она,и ссылки на чарты тоже нихера не работают,как это исправить? и какие замечания по коду есть?
#44. Gemorroj Off (107)
Administrator
2012.01.28 00:12
по коду - не так.
там валидный xml. ты можешь парсить данные с помощью simplexml легко и не принужденно.
#45. POFIGISST Off (6)
Участник
2012.01.28 01:01
Gemorroj написал:
по коду - не так.
там валидный xml. ты можешь парсить данные с помощью simplexml легко и не принужденно.
Благодарю Паш,протрезвею почитаю инфу как делать через simplexml,не разу так не делал(( но обязательно сделаю smile
Вложения
Gemorr.jpg 4kb {128x90} [загрузок: 684]
#46. Karayazi Off (1)
Участник
2012.03.04 23:11
Здравствуйте, пишу граб поиска, все нормально работает, но когда подключаю шапку то скрины не показывает, попробывал разные шапки но всеровно бестольку.
Скажите пожалуйста, в чем проблема и как его решить?
Вот индексный файл:
Код:
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';?>
#47. tipsun Off (19)
Moderator
2012.03.05 00:12
Код из шапки принеси.
#48. Karayazi Off (1)
Участник
2012.03.05 00:12
Например вот:
Код:
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>
#49. POFIGISST Off (6)
Участник
2012.03.05 03:03
мож у тя адрес include не правильно прописан?
#50. Karayazi Off (1)
Участник
2012.03.05 11:11
Да все правильно, просто вот такая ощибка.
А вы попробуйте у себя, можеть что-то получиться.
#51. tipsun Off (19)
Moderator
2012.03.05 17:05
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 17:05)
#52. Karayazi Off (1)
Участник
2012.03.05 17:05
tipsun я этого знаю, но хочу маскировать адрес изображений под свой сайт.
Можеть есть какой-то другой вариант?
#53. tipsun Off (19)
Moderator
2012.03.05 17:05
Через файл можно.

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']);
#54. Karayazi Off (1)
Участник
2012.03.05 18:06
tipsun спасибо большое, помогло.
Страниц: 14 5 6 Все
Главная
WEB
PunBB Mod v0.6.2
0.039 s