Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с новостями
 
 автор: wames   (08.06.2008 в 15:39)   письмо автору
 
 

Здравствуйте дорогие форум чане!Помогите пожайлуста сграбить ленту новостей я пытался но у меня не получилось((((Если сможете помочь не оставьте пожалуйста без внимания мою тему.
Вот страница которую надо сграбить http://euro08.football.ua/ а вот та часть страницы которую нужно сграбить <div id="ctl00_ctl07_newsImageDiv" class="news_image" style="width:435px;"> межу ними новости <table id="Table_01" width="465" height="223" border="0" cellpadding="0" cellspacing="0">

и желательно чтоб в грабе не было лишних тегов,нужно оставить только текст и ссылки,Заранее спасибо

   
 
 автор: sim5   (08.06.2008 в 18:14)   письмо автору
 
   для: wames   (08.06.2008 в 15:39)
 

Это можно и без ругулярных выражений достать (быстрее будет), правда "мусор" немного останется, но его можно вырезать. Все просто (если с подробностями):

<?
//взяли
$src file_get_contents('http://euro08.football.ua/');
//чтобы просто посмотреть пример без charset...
$src iconv("UTF-8","windows-1251",$src);
//выбрасываем от начала страницы, до начала блока
$src substr($srcstrpos($src,'<div id="ctl00_ctl07_newsImageDiv"'));
//берем только нужное
$src substr($src0strpos($src,'<table id="Table_01"'));
//картинки в исходнике имеют относительный путь, потому добавляем домен
$src str_replace('src="''src="http://euro08.football.ua'$src);
//смотрим
echo $src;

   
 
 автор: wames   (08.06.2008 в 18:43)   письмо автору
 
   для: sim5   (08.06.2008 в 18:14)
 

Спасибо за помощь:)!Но мне нужны новости как в этой теме http://softtime.ru/forum/read.php?id_forum=6&id_theme=45052 Не могли бы вы переделать так чтобы принцип работы граба был как в этой теме?

   
 
 автор: sim5   (08.06.2008 в 18:57)   письмо автору
 
   для: wames   (08.06.2008 в 18:43)
 

А что в этой теме? Там два способа - первый тоже, что я и привел вам, второй - ипользование рег. выражений, но уже для того, чтобы забрать некие конкретные теги. Страница, на которую вы ссылаетесь, использует елементы DIV, в которые помещены ссылки и изображения. Если вам нужны только они, значит тогда нужно вырезать их. Если вам не принципиально наличие или отсутствие этих элементов на странице, то просто добавьте в свой CSS файл стили для них - получите законченный дизайн ваших новостей.

   
 
 автор: real   (08.06.2008 в 19:44)   письмо автору
 
   для: sim5   (08.06.2008 в 18:57)
 

Здрствуйте очень заинтересован этой темой,Уважаемый sim5 не могли бы вы показать пример?граба

   
 
 автор: sim5   (08.06.2008 в 20:37)   письмо автору
 
   для: real   (08.06.2008 в 19:44)
 

Пример какого граба? Весь граб заключается в том, что получаете интересующую вас страницу и анализируете ее HTML-код, а дальше уже зависит от того, что и как вы хотите забрать. Автор темы указывает на ссылку - посмотрите, там два способа, других я тоже не знаю. Единственно, это как обращаться к интересующему вас контенту. В примерах выше, это получение всего контента страницы в строку, но это ведь не всегда возможно сделать так. Например, если для получения контента требуется POST запрос, значит необходимо будет работать через сокеты. Например, получим информацию о прохождении посылки, которую вы отправили своему клиенту. Сделать это можно на сайте Почта Росии, указав в запросе необходимый параметр (BarCode) равный 14-ти разрядному номеру почтовой квитанции, например:

<?
//получаем контент страницы в строку 
//$num = равен 14-ти разрядному номеру квитанции 
$source file_get_contents("http://www.russianpost.ru/resp_engine.aspx?
Path=portal/ru/home/postal/trackingpo&BarCode=
$num");
//если надо, то в win-1251 
$source iconv("UTF-8","windows-1251",$source);
//зная, что информация о прохождении посылки начинается с тега
//<h2>Результат поиска:</h2>, а сразу после нужной нам таблицы начинаются пара тегов
//<p><i>, с помощью стандартных функций РНР вырезаем нужное
//останется указать стили и все.
  
//а так можно взять это же самое, но через сокеты
$port fsockopen('www.russianpost.ru'80); 
fwrite($port
  
"GET /resp_engine.aspx?Path=portal/ru/home/postal/trackingpo&BarCode=$num HTTP/1.0\r\n" .
  
"Host: www.russianpost.ru\r\n" .
  
"Content-Type: application/x-www-form-urlencoded\r\n\r\n");
  
$respons ''
  while (!
feof($port)) $respons .= fgets($port20); 
  
fclose ($port);
  
$respons iconv("UTF-8","windows-1251",$respons);
  
//вот начало интересующее нас  
  
$respons substr($responsstrpos($respons"<h2>"));
  .......
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования