|
|
|
| Здравствуйте дорогие форум чане!Помогите пожайлуста сграбить ленту новостей я пытался но у меня не получилось((((Если сможете помочь не оставьте пожалуйста без внимания мою тему.
Вот страница которую надо сграбить 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">
и желательно чтоб в грабе не было лишних тегов,нужно оставить только текст и ссылки,Заранее спасибо | |
|
|
|
|
|
|
|
для: wames
(08.06.2008 в 15:39)
| | Это можно и без ругулярных выражений достать (быстрее будет), правда "мусор" немного останется, но его можно вырезать. Все просто (если с подробностями):
<?
//взяли
$src = file_get_contents('http://euro08.football.ua/');
//чтобы просто посмотреть пример без charset...
$src = iconv("UTF-8","windows-1251",$src);
//выбрасываем от начала страницы, до начала блока
$src = substr($src, strpos($src,'<div id="ctl00_ctl07_newsImageDiv"'));
//берем только нужное
$src = substr($src, 0, strpos($src,'<table id="Table_01"'));
//картинки в исходнике имеют относительный путь, потому добавляем домен
$src = str_replace('src="', 'src="http://euro08.football.ua', $src);
//смотрим
echo $src;
|
| |
|
|
|
|
|
|
|
для: sim5
(08.06.2008 в 18:14)
| | Спасибо за помощь:)!Но мне нужны новости как в этой теме http://softtime.ru/forum/read.php?id_forum=6&id_theme=45052 Не могли бы вы переделать так чтобы принцип работы граба был как в этой теме? | |
|
|
|
|
|
|
|
для: wames
(08.06.2008 в 18:43)
| | А что в этой теме? Там два способа - первый тоже, что я и привел вам, второй - ипользование рег. выражений, но уже для того, чтобы забрать некие конкретные теги. Страница, на которую вы ссылаетесь, использует елементы DIV, в которые помещены ссылки и изображения. Если вам нужны только они, значит тогда нужно вырезать их. Если вам не принципиально наличие или отсутствие этих элементов на странице, то просто добавьте в свой CSS файл стили для них - получите законченный дизайн ваших новостей. | |
|
|
|
|
|
|
|
для: sim5
(08.06.2008 в 18:57)
| | Здрствуйте очень заинтересован этой темой,Уважаемый sim5 не могли бы вы показать пример?граба | |
|
|
|
|
|
|
|
для: 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($port, 20);
fclose ($port);
$respons = iconv("UTF-8","windows-1251",$respons);
//вот начало интересующее нас
$respons = substr($respons, strpos($respons, "<h2>"));
.......
?>
|
| |
|
|
|