|
|
|
| Помогите реализовать скрипт для считывания определенной инфы с яндекса. Для вытаскивание определенных кусков надо знание регулярных выражений, но сколько я с ними не копаюсь так и не могу их понять :(
<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&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 посоветуйте сайты с более подробным описанием регулярных выражений, и очень бы хорошо было чтоб там были примеры. | |
|
|
|
|
|
|
|
для: 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&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 | |
|
|
|
|
|
|
|
для: cheops
(09.09.2005 в 01:09)
| | Да ссылку дать это очень хорошо, но так как информация на яндексе постоянно меняется, и врезультате будет пустое изоброжение.
Да с XML проблем бы ни каких небыло, считать его достаточно легко, да и програм занимающимся эти сейчас очень много. Толко XML нельзя ихний достать. Поэтому приходися решать это через HTML и регулярные выражения с которыми туговато пока :))
спасибо за линк, такого описания пока еще не находил. | |
|
|
|
|
|
|
|
для: smertnik
(09.09.2005 в 02:05)
| | На самом деле - это страница из мануала - загрузите русскую версию мануала с www.php.net - она там обязательно будет. | |
|
|
|
|
|
|
|
для: 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, микрофон, колоноки ) данный кусок, как не пытаюсь, но к ниму подобраться ни как не получается. Если делать много условий поиска строки то ни чего не выходит, а если сократить выводится все что находится на странице между
| |
|
|
|
|
|
|
|
для: 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&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];
?>
|
| |
|
|
|
|