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

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

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

 

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

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

тема: Считывание инфы с яндекс маркета
 
 автор: smertnik   (08.09.2005 в 19:38)   письмо автору
 
 

Помогите реализовать скрипт для считывания определенной инфы с яндекса. Для вытаскивание определенных кусков надо знание регулярных выражений, но сколько я с ними не копаюсь так и не могу их понять :(

<td class="img"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td align="center"><img src="/i/nbsp.gif" width="100" height="100" alt=""></td></tr></table></td>
<td>
<div class="name">
<a href="/model.xml?hid=91013&amp;modelid=764430">Roverbook VOYAGER E510 (Pentium M 1600Mhz/15.0"/256Mb/40.0Gb/DVD/CD-RW)</a> <sup style="color:#c00">новинка</sup>
</div>
<div>от <b>23 484</b> до <b>28 526 р.</b>
</div>
<div>
Pentium M 1600 МГц, 256 Mb, 40 Gb, 15 дюймов, 2.9 кг, 333x43x275 мм, DVD/CD-RW, TV-out, LPT, LAN, модем, Touchpad, микрофон, колоноки
</div>
<div><table border="0" cellspacing="0" cellpadding="3" class="allOffers" align="left"><tbody><tr>
<td>


Из данного куска надо вытащить: изоброжение ( <img src="/i/nbsp.gif" width="100" height="100" alt=""> ), присвоить ему имя и закачать на сервер( как закочать то его понятно, а вот как вытащить из кода и сменить имя на (Roverbook VOYAGER E510 (Pentium M 1600Mhz/15.0"/256Mb/40.0Gb/DVD/CD-RW) ) незнаю), строчку Roverbook VOYAGER E510 (Pentium M 1600Mhz/15.0"/256Mb/40.0Gb/DVD/CD-RW) и присвоить ее определенной переменной( строчку вытощить у меня получилось, вот только она со ссылкой, а ее то и ненадо

<?php 
  $link 
"http://market.yandex.ru/guru.xml?CMD=-RR=b,1,0,0-PF=6722217%2BEQ%2Bsel%2B76443098-PF= 1801946%2BEQ%2Bsel%2B1870963-VIS=5E2-GP=0-CAT_ID=432460-PG= 10&hid=91013";
  
$bufer file_get_contents($link); 

  
// Текст 
  
$pos_str strpos($bufer,"<div class=\"name\">",$pos_str);
  
$pos_str strpos($bufer,"<a href=",$pos_str);
  
$pos_end strpos($bufer,"</a>",$pos_str);
  
$text substr($bufer,$pos_str$pos_end $pos_str); 
  echo 
$text
?>

), и описание (Pentium M 1600 МГц, 256 Mb, 40 Gb, 15 дюймов, 2.9 кг, 333x43x275 мм, DVD/CD-RW, TV-out, LPT, LAN, модем, Touchpad, микрофон, колоноки) и тоже присвоить опредеоенной переменной( его как не пытался вытащить так и не получилось, пытался идти к этой строке кусками(

признак начала блока  </b> до <b>  ; </b></div><div>
признак конца блока </div><div>
.
но ничего не вышло.))
Отдельные переменные нужны чтобы инфу закинуть в базу данных.
Самое главное чтоб скрипт считывал всю инфу со страници, т.к на странице может быть до 10 видов ноутбуков и надо их все считать и залить в базу данных.

P.S посоветуйте сайты с более подробным описанием регулярных выражений, и очень бы хорошо было чтоб там были примеры.

   
 
 автор: cheops   (09.09.2005 в 01:09)   письмо автору
 
   для: smertnik   (08.09.2005 в 19:38)
 

Давайте попорядку, с изображением
<?php 
$text 
'<td class="img"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td align="center"><img src="/i/nbsp.gif" width="100" height="100" alt=""></td></tr></table></td> 
<td> 
<div class="name"> 
<a href="/model.xml?hid=91013&amp;modelid=764430">Roverbook VOYAGER E510 (Pentium M 1600Mhz/15.0"/256Mb/40.0Gb/DVD/CD-RW)</a> <sup style="color:#c00">новинка</sup> 
</div> 
<div>от <b>23 484</b> до <b>28 526 р.</b> 
</div> 
<div> 
Pentium M 1600 МГц, 256 Mb, 40 Gb, 15 дюймов, 2.9 кг, 333x43x275 мм, DVD/CD-RW, TV-out, LPT, LAN, модем, Touchpad, микрофон, колоноки 
</div> 
<div><table border="0" cellspacing="0" cellpadding="3" class="allOffers" align="left"><tbody><tr> 
<td>'

preg_match("#(<img[^>]+>)#i"$text$out); 
$img $out[1]; 
?>

Зачем нужно загружать его на сайт - если всегда можно дать ссылку на другой сайт на тот же Yandex?

Насколько я помню информация на Yandex поступает из RSS-файлов - там их нет? Ведь разбирать XML легче чем HTML.

Почитать про регулярные выражения можно в справочнике функций http://www.softtime.ru/dic/id_dic=134&id_group=3

   
 
 автор: smertnik   (09.09.2005 в 02:05)   письмо автору
 
   для: cheops   (09.09.2005 в 01:09)
 

Да ссылку дать это очень хорошо, но так как информация на яндексе постоянно меняется, и врезультате будет пустое изоброжение.

Да с XML проблем бы ни каких небыло, считать его достаточно легко, да и програм занимающимся эти сейчас очень много. Толко XML нельзя ихний достать. Поэтому приходися решать это через HTML и регулярные выражения с которыми туговато пока :))

спасибо за линк, такого описания пока еще не находил.

   
 
 автор: cheops   (09.09.2005 в 15:03)   письмо автору
 
   для: smertnik   (09.09.2005 в 02:05)
 

На самом деле - это страница из мануала - загрузите русскую версию мануала с www.php.net - она там обязательно будет.

   
 
 автор: smertnik   (09.09.2005 в 15:19)   письмо автору
 
   для: cheops   (09.09.2005 в 15:03)
 

Как можно вытащить (Pentium M 1600 МГц, 256 Mb, 40 Gb, 15 дюймов, 2.9 кг, 333x43x275 мм, DVD/CD-RW, TV-out, LPT, LAN, модем, Touchpad, микрофон, колоноки ) данный кусок, как не пытаюсь, но к ниму подобраться ни как не получается. Если делать много условий поиска строки то ни чего не выходит, а если сократить выводится все что находится на странице между

<div></div>

   
 
 автор: cheops   (09.09.2005 в 19:21)   письмо автору
 
   для: smertnik   (09.09.2005 в 15:19)
 

Это можно сделать следующим образом
<?php 
$text 
'<td class="img"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td align="center"><img src="/i/nbsp.gif" width="100" height="100" alt=""></td></tr></table></td> 
<td> 
<div class="name"> 
<a href="/model.xml?hid=91013&amp;modelid=764430">Roverbook VOYAGER E510 (Pentium M 1600Mhz/15.0"/256Mb/40.0Gb/DVD/CD-RW)</a> <sup style="color:#c00">новинка</sup> 
</div> 
<div>от <b>23 484</b> до <b>28 526 р.</b> 
</div> 
<div> 
Pentium M 1600 МГц, 256 Mb, 40 Gb, 15 дюймов, 2.9 кг, 333x43x275 мм, DVD/CD-RW, TV-out, LPT, LAN, модем, Touchpad, микрофон, колоноки 
</div> 
<div><table border="0" cellspacing="0" cellpadding="3" class="allOffers" align="left"><tbody><tr> 
<td>'

preg_match("#<div class=\"name\">[^>]+>([^<]+)<#i"$text$out); 
echo 
$out[1]; 
?>

   
Rambler's Top100
вверх

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