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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Парсер

Сообщения:  [1-7] 

 
 автор: AlexDIXI   (27.09.2008 в 12:54)   письмо автору
 
   для: sim5   (27.09.2008 в 12:50)
 

Угу согласен. Я сделал так что б работало, если постаратся то получится нечто короче..

  Ответить  
 
 автор: sim5   (27.09.2008 в 12:50)   письмо автору
 
   для: AlexDIXI   (27.09.2008 в 12:28)
 

Разумно, но ничего не стоит удалить переводы строк и табуляцию, вытянув текст в строку, и взять за основу поиска не номера id, и тогда... Короче, это я к тому, что ваш код может быть намного короче.

  Ответить  
 
 автор: AlexDIXI   (27.09.2008 в 12:28)   письмо автору
 
   для: sim5   (26.09.2008 в 10:16)
 

id наверника меняются рэндомно. И тогда этот скрипт не сработает, а мой скрипт работаеть будет даже если ID меняете..

  Ответить  
 
 автор: mihdan   (26.09.2008 в 17:32)   письмо автору
 
   для: Crayzers   (26.09.2008 в 03:00)
 

Возможно вас заинтересует http://php.net/manual/en/ref.domxml.php

  Ответить  
 
 автор: sim5   (26.09.2008 в 10:16)   письмо автору
 
   для: AlexDIXI   (26.09.2008 в 09:47)
 

Ну если ориентироваться на постоянство атрибутов тегов, то можно и проще:
<?
$contents 
= substr($contents,strpos($contents,"(")+1,strpos($contents,"addAudioLink"));
$s1 = substr($contents,0,strpos($contents,")"));
$contents = substr($contents,strpos($contents,"performer38857975")+19);
$s2 = substr($contents,0,strpos($contents,"</b>"));
$contents = substr($contents,strpos($contents,"title38857975")+15);
$s3 = substr($contents,0,strpos($contents,"</span>"));
$contents = substr($contents,strpos($contents,"id4137954")+11);
$s4 = substr($contents,0,strpos($contents,"</a>"));
$contents = substr($contents,strpos($contents,"duration")+10);
$s5 = substr($contents,0,strpos($contents,"</div>"));
echo 
$s1." - ".$s2." - ".$s3." - ".$s4." - ".$s5;

  Ответить  
 
 автор: AlexDIXI   (26.09.2008 в 09:47)   письмо автору
 
   для: Crayzers   (26.09.2008 в 03:00)
 

Здравствуйте Crayzers. Я очень много раз сталкивался с этим.. есть пару идей, но к сожалению, код будет грамостким. Вообще лучше тут использвоать регулярные выражения, но я с мини только начал работаь, опыта мало что б вот так прямо сейчас написать вам код.

Вот смысл моей идеи. Парсим сраницу я так понимаю с следующим кодом котоый вы указали. И с помощью strpos и substr вырезаем те элементы которые нам не обходимы. И заносим их в нужные нам переменные.

Снача нужно посмотреть внимательно код страницы. Вот что я придумал:


<?php
$contents 
=  "<div class=\"audioRow\" id=\"audio38857975\" style='margin:0px auto;'> 
 <table style=\"width:575px\" style='margin-left:10px;'><tbody> 
 <tr><td style=\"width: 18px; vertical-align:top\"> 
 <img class=\"playimg\" onclick=\"return operate(38857975,1441,4137954,'55c3f47893',228);\" id=\"imgbutton38857975\" nosorthandle=\"true\" src=\"images/play.gif\"/> 
 </td>                                                                                                                                           
 <td style=\"width: 515px;\"><div style='float:left'> 
  <b id=\"performer38857975\">Dimas</b> - <span id=\"title38857975\">Выстрел в цель!!!</span> <small>(<a href='id4137954'>Лена</a>)</small></div> 
  <div class=\"duration\">3:48</div> 
 </td> 
 <td style=\"width: 40px;\"><a class='addAudioLink' href='video.php?act=add&add=0&gid=0&aid=38857975&oid=4137954&hash=f483045f7b48110b720c190e6ef4e1ce'>Добавить</a> 
 </td> 
 </tr> 
 <tr><td></td> 
 <td> 
<div style=\"height:14px;\"> 
<div id=\"line38857975\" class=\"playline\"></div> 
<div id=\"toddler38857975\" class=\"toddler\"></div> 
<div id=\"player38857975\" style=\"display: none;\" class=\"playerClass\"></div> 
</div> 
 </td> 
 <td></td> 
 </tr> 
 </tbody> 
</table> 
<div id=\"lyrics38857975\"></div> 
</div>
"
;

// создаем копии старницы, что б потом вырезать с каждой по эллементу. 

$operate = $contents; // Копия для "38857975,1441,4137954,'55c3f47893',228"
$bid = $contents; // Копия для "Dimas"
$spanid = $contents; // Копия для "Выстрел в цель!!!"
$small = $contents; // Копия для "Лена"
$duration = $contents; // Копия для "3:48"

// Вырезаем "38857975,1441,4137954,'55c3f47893',228"

$pos = strpos($operate, "operate("); 
$operate = substr($operate, $pos);
$pos = strpos($operate, ");");
$operate = substr($operate, 8,  $pos -8);

$operate = trim($operate);


// Вырезаем "Dimas"

$pos = strpos($bid, "<div style='float:left'>"); 
$bid = substr($bid, $pos);
$pos = strpos($bid, "</b>");
$bid = substr($bid, 0,  $pos );

$bid = strip_tags($bid);
$bid = trim($bid);


// Вырезаем "Выстрел в цель!!!"

$pos = strpos($spanid, "<span id="); 
$spanid = substr($spanid, $pos);
$pos = strpos($spanid, "</span>");
$spanid = substr($spanid, 0,  $pos );

$spanid = strip_tags($spanid);
$spanid = trim($spanid);


// Вырезаем "Лена"

$pos = strpos($small, "<a href='id"); 
$small = substr($small, $pos);
$pos = strpos($small, "</a>");
$small = substr($small, 0,  $pos );

$small = strip_tags($small);
$small = trim($small);


// Вырезаем "3:48"

$pos = strpos($duration, "<div class=\"duration\">"); 
$duration = substr($duration, $pos);
$pos = strpos($duration, "</div>");
$duration = substr($duration, 0,  $pos );

$duration = strip_tags($duration);
$duration = trim($duration);


// Вывод

echo $operate." | ".$bid." | ".$spanid." | ".$small." | ".$duration ;

?>



и вот что у меня получилось :)


38857975,1441,4137954,'55c3f47893',228 | Dimas | Выстрел в цель!!! | Лена | 3:48


Спасибо за внимание. Обращайтесь еще..

  Ответить  
 
 автор: Crayzers   (26.09.2008 в 03:00)   письмо автору
 
 

Помогите с парсером….
Есть страница www.имя_сайта.ru
На этой странице хранятся видеоролики….
На каждой странице по 10-15 шт
Кусок html постоянно повторяется только значения меняются
Нужно выдернуть те элементы которые отмечены жирным шрифтом….
2 суток уже мучаюсь толком ничего не получается….
Выдергиваются только отдельно элементы а со всем куском не могу сработаться : (
<div class="audioRow" id="audio38857975" style='margin:0px auto;'>
 <table style="width:575px" style='margin-left:10px;'><tbody>
 <tr><td style="width: 18px; vertical-align:top">
 <img class="playimg" onclick="return operate(38857975,1441,4137954,'55c3f47893',228);" id="imgbutton38857975" nosorthandle="true" src="images/play.gif"/>
 </td>                                                                                                                                          
 <td style="width: 515px;"><div style='float:left'>
  <b id="performer38857975">Dimas</b> - <span id="title38857975">Выстрел в цель!!!</span> <small>(<a href='id4137954'>Лена</a>)</small></div>
  <div class="duration">3:48</div>
 </td>
 <td style="width: 40px;"><a class='addAudioLink' href='video.php?act=add&add=0&gid=0&aid=38857975&oid=4137954&hash=f483045f7b48110b720c190e6ef4e1ce'>Добавить</a>
 </td>
 </tr>
 <tr><td></td>
 <td>
<div style="height:14px;">
<div id="line38857975" class="playline"></div>
<div id="toddler38857975" class="toddler"></div>
<div id="player38857975" style="display: none;" class="playerClass"></div>
</div>
 </td>
 <td></td>
 </tr>
 </tbody>
</table>
<div id="lyrics38857975"></div>
</div>


Или можно нормальную ссылку по созданию грабера страниц то ничего путного не нашел….: (

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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