Спарсить цену

dmbltro

Создатель
Регистрация
18 Фев 2010
Сообщения
46
Реакции
4
Вот отсюда Для просмотра ссылки Войди или Зарегистрируйся нужно спарсить средние цены на бенз.
Вот фрагмент HTML кода:
HTML:
       <tr class="odd">
                    <td><a href="/tek/oil/a-80.htm">Бензин А-76/80</a></td>
                    <td>9.68</td>
                    <td>9.25/10.50</td>
                </tr>

Вытащить надо 9.68. Я так понимаю, что это осуществляется с применением регулярных выражений. А в них я не особо разбираюсь…
 
PHP:
$page = file_get_contents ('страница.txt');
 
$find = preg_match ("#<td>[0-9\.]{0,5}</td>#Uis",$page, $rez);
 
echo "<pre>";
print_r ($rez);
 
вот решение твоей задачи на питоне

Код:
from grab import Grab
g = Grab()
g.go('http://biz.liga.net/tek/oil/')
result = g.response.body
print result.split("<td>")[22].split("</td>")[0]
print result.split("<td>")[25].split("</td>")[0]
print result.split("<td>")[28].split("</td>")[0]
print result.split("<td>")[31].split("</td>")[0]
print result.split("<td>")[34].split("</td>")[0]

выдаст
9.68
10.23
10.54
11.21
9.81
все нужные тебе средние цены. можешь переписать на своем языке программирования
 
Не выходит чуть. Я по другому пробовал сделать: вывести данные, которые находятся между
HTML:
<td><a href="/tek/oil/a-80.htm">Бензин А-76/80</a></td>
                    <td>
и
HTML:
</td>

вот так:
PHP:
<?php
 
$url = "qqq.html";
$unique_start = "<tr class=\"odd\">";
$unique_end = "</td>";
 
function cena($url, $unique_start, $unique_end) { 
$code = file_get_contents($url); 
preg_match('/'.preg_quote($unique_start,
'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $code, $match); 
return $match[1]; 
}
 
echo cena($url, $unique_start, $unique_end);
 
?>

Но так выдает не чисто цену, а в виде <td>9.25, а нужно без <td>
 
PHP:
$результат_без_тд = str_replace ('<td>', '', cena($url, $unique_start, $unique_end))
 
Благодарю! =)
 
1) Для того что бы этого небыло нужно правельно шаблон задать ! с какой радости .* !?!?может все таки как то так (\d+\.\d+)
2) Если уж чистите от тегов тогда strip_tags(); иначе чуть сменится HTML и пипец приедит....
 
И от ещё.
Есть например такой код:
Код:
<tr><td>Бла-бла-бла</td>
<td>9.12</td>
<td>10.22</td>
<td>11.89</td>
</tr>

Как при выборе пропустить, например, строку с 9.12 и забрать строку с 10.22 (или пропустить 9.12, 10.22 и забрать 11.89 (при условии, что пропускаемые числа могут меняться)?
 
1) Для того что бы этого небыло нужно правельно шаблон задать ! с какой радости .* !?!?может все таки как то так (\d+\.\d+)
Дело в том что код Для просмотра ссылки Войди или Зарегистрируйся
И мои познания в пхп не позволяют разобраться в причине.
(ещё раз напишу что у меня сработало
$find = preg_match_all ("#<td>[0-9\.]{0,5}</td>#Uis",$page, $rez);

Да, вебмастера они не предсказуемые. Могут и дизайн поменять.
 
Назад
Сверху