X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Как парсить html-страницу?
happyhand
happyhand
Topic Starter сообщение 17.5.2010, 19:09; Ответить: happyhand
Сообщение #1


Есть вот такая html-страница с курсами валют:
http://bank.gov.ua/Fin_ryn/of_kurs.htm
Как можно парсить только выбранные валюты себе на сайт?
Помогите с кодом, пожалуйста.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unnormal
unnormal
сообщение 18.5.2010, 9:55; Ответить: unnormal
Сообщение #2


[php]$html = file_get_contents("http://bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx");
$start_table = 'table cellspacing="0" cellpadding="3" rules="cols" bordercolor="#DADADA" border="1" id="DataGrid1" bgcolor="White" width="85%">';
$end_table = '</table>
<P></P>';
$start = strpos($html, $start_table);
$end = strpos($html, $end_table);
$result = substr($html, $start - 1, $end - $start);
echo $result;
[/php]В результате будет html таблица курсов валют, а дальше по тому же принципу
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 18.5.2010, 14:41; Ответить: Apay
Сообщение #3


есть хорошая ф-я preg_match_all
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gambrinus
gambrinus
сообщение 18.5.2010, 22:46; Ответить: gambrinus
Сообщение #4


Типо так?
[PHP]
<?php

$html = file_get_contents("http://bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx");
$start_table = 'table cellspacing="0" cellpadding="3" rules="cols" bordercolor="#DADADA" border="1" id="DataGrid1" bgcolor="White" width="85%">';
$start_td = '<td>';
$end_td = '</td>';
$end_table = '</table>
<P></P>';
$start = strpos($html, $start_table, $start_td);
$end = strpos($html, $end_td, $end_table);
$result = substr($html, $start - 1, $end - $start);
echo $result;

?>
[/PHP]
НО ЧЕТ НЕ РАБОТАЕТ!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 18.5.2010, 23:27; Ответить: Apay
Сообщение #5


[php]define( 'REGEX',
'#<tr class="w1" align="Center" valign="Middle">\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Left">(.*?)</td>\\s*'.
'<td align="Right">(.*?)</td>\\s*'.
'</tr>#i' );

$page = @file_get_contents('http://bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx');
if( preg_match_all( REGEX, $page, $m, PREG_SET_ORDER ) )
foreach( $m as $c ){
$dig_code = $c[1];
$lit_code = $c[2];
$count = $c[3];
$name = $c[4];
$rate = $c[5];
...
}
else echo 'error!';[/php]это работает
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gambrinus
gambrinus
сообщение 18.5.2010, 23:29; Ответить: gambrinus
Сообщение #6


(Apay @ 19.5.2010, 02:27) *
это работает

ты пробовал свой код?У меня он НЕ РАБОТАЕТ!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 18.5.2010, 23:37; Ответить: Apay
Сообщение #7


gambrinus, во первых - повежливей, вам же помогают, во вторых - последнюю точку с запятой поставить - что, очень сложно? при копипасте упустил. надо хоть иногда мозги включать и смотреть что не так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gambrinus
gambrinus
сообщение 18.5.2010, 23:44; Ответить: gambrinus
Сообщение #8


(Apay @ 19.5.2010, 02:37) *
gambrinus, во первых - повежливей, вам же помогают, во вторых - последнюю точку с запятой поставить - что, очень сложно? при копипасте упустил. надо хоть иногда мозги включать и смотреть что не так.

ИЗВИНИ но всеравно НЕ РАБОТАЕТ
МОЙ КОД
[PHP]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>парсить html-страницу</title>
</head>

<body>
<?php

define( 'REGEX',
'#<tr class="w1" align="Center" valign="Middle">\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Center">(.*?)</td>\\s*'.
'<td align="Left">(.*?)</td>\\s*'.
'<td align="Right">(.*?)</td>\\s*'.
'</tr>#i' );

$page = @file_get_contents('http://bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx');
if( preg_match_all( REGEX, $page, $m, PREG_SET_ORDER ) )
foreach( $m as $c ){
$dig_code = $c[1];
$lit_code = $c[2];
$count = $c[3];
$name = $c[4];
$rate = $c[5];
}
else echo 'error!';

?>
</body>
</html>[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 19.5.2010, 0:06; Ответить: Letmetouchyou
Сообщение #9


gambrinus, извини пишеться через И
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 19.5.2010, 0:11; Ответить: Apay
Сообщение #10


так вместо трех точек надо подставить свою обработку, например вывод в таблицу
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Зачем перед лендингом ставят промежуточную страницу?
0 Boymaster 248 Вчера, 23:58
автор: Boymaster
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
12 Boymaster 1924 Вчера, 21:03
автор: MisterBit
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
29 freeax 4817 17.4.2024, 1:19
автор: sergio11
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
148 adw-kupon.ru 19713 8.4.2024, 10:37
автор: Skyworker
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
18 uahomka 3109 5.4.2024, 5:53
автор: Skyworker


 



RSS Текстовая версия Сейчас: 20.4.2024, 7:36
Дизайн