Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/68: Рейтинг темы: голосов - 68, средняя оценка - 4.96
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219

Как получать данные с сайта rp5.ru ?

14.11.2012, 17:42. Показов 13375. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал программу генерирующую розу ветров на основе данных из .csv файла. Вот только это файл нужно скачивать с сайта http://rp5.ru/%D0%90%D1%80%D1%... 1%83%D0%B3
в ручном режиме. Сначала нужно выбрать период времени, затем нажать на кнопку "Выбрать в файл CSV.GZ". Как это автоматизировать?
Сначала сделать POST, запрос, а затем что? Ссылка на .gz все время имеет разные названия :-(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2012, 17:42
Ответы с готовыми решениями:

Как получать текстовые данные с сайта?
Каким образом можно с сайта gismeteo.ru получить погоду для своего города? (там на главной странице пишет ваш город)

Как получать динамические данные с сайта
Здравствуйте! Я хотел бы узнать есть ли способ получать данные со страницы в реальном времени, используя node.js. В качестве примера можно...

Как получать текстовые данные с сайта?
Каким образом можно с сайта gismeteo.ru получить погоду для своего города? (там на главной странице пишет ваш город)

41
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
16.11.2012, 18:41
C помощью какого-нибудь сканера http заголовков смотрите, куда идёт запрос при нажатии на кнопку "Выбрать в файл CSV.GZ", затем смотрите какие данные туда посылаются. Потом с помощью сURL либо с помощью file_get_contents делаете запрос на адрес, который вы получите. В запросе посылаете те же данные, что посылаются с сайта. Потом получаете ссылку и скачиваете файл с помощью всё того же curl'a.
0
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
19.11.2012, 03:38  [ТС]
На странице http://rp5.ru/%D0%90%D1%80%D1%... 1%83%D0%B3

тег form имеет следующий вид
HTML5
1
 <form name="f_farchive" action="" method="post">
Как имя тега form может влиять на обработку формы? Никогда с этим не сталкивался. А вот так не работает:
HTML5
1
<form arction="http://rp5.ru/f_faction" method=post>
и так не работает
HTML5
1
<form arction="http://rp5.ru/%D0%90%D1%80%D1%85%D0%B8%D0%B2_%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D1%8B_%D0%B2_%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B5_%D1%86%D0%B5%D0%BD%D1%82%D1%80,_%D0%91%D0%B0%D0%BB%D1%87%D1%83%D0%B3" method=post>
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
19.11.2012, 04:47
буква лишняя<form arction=

Добавлено через 2 минуты
тег action показывает в каком файле находится обработчик формы, тюе в какой файл передаются данные
Если он пустой это значит что обработка данных производится в том же файле

Добавлено через 25 минут
мне кажется для того что бы скачивать эти файлы вам не нужны никакие заголовки, вы сможете формировать запрос сами, посмотрите на запрос который формируется, он выглядит примерно так
Code
1
http://77.120.119.138/objects/files.from.archive/27/27605.19.11.2012.19.11.2012.1.0.0.ru.ansi.00000000.csv.gz
начало
Code
1
http://77.120.119.138/objects/files.from.archive/27/27605.
никогда не меняется
далее идут начальная и конечная даты 19.11.2012.19.11.2012.
далее три цифры меняются в зависимости от того что вы хотите выбрать
1.0.0 если вам нужен отчет за промежуток дат
2.11.0 усли вам нужен отчет за месяц где первая цифра 2 тип отчета, вторая цифра это месяц, третий 0
3.11.19 если вам нужно выбрать конкретную дату, где первая цифра 3 тип отчета, вторая месяц, третья число
далее ru.ansi. идут язык и кодировка файла
и окончание 00000000.csv.gz которое тоже никогда не меняется
Т.е вы можете свободно сами формировать запрос исходя из требований которые вам нужны и обращаться по адресу который у вас получился и в ответ вам будет отдаваться файл на скачку

Добавлено через 9 минут
кстати 27605 в начале это метеостанция (WMO ID):27605
1
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
19.11.2012, 04:52  [ТС]
Я поставил прокси/сканер заголовков Proxomitron-RE и выяснил, что данные отсылаются по этому URL http://rp5.ru/inc/f_archive.php
Добавил этот URL в action.
Выдрал все теги select, input, radio и вставил их в форму. Но все-равно, имя архива не генерируется и имя архива не возвращается ((((


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<form action="http://rp5.ru/inc/f_archive.php" method=post>
 
<table cellpadding="3" cellspacing="0" >
            <tr>
                <td colspan=2><b>В файл</b></td>
                <td colspan=2 align=center>Для заданного периода выбирать</td>
            </tr>
            <tr>
                <td nowrap="nowrap" align="left">Конечная (бОльшая) дата:</td>
                <td nowrap="nowrap" width="220">
                <select name="f_ed0" onChange="emptyRes();" style="width: 45px; font-weight: bold; font-size: 80%;">
                <option value="-1">-день---</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19" selected="selected">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
                <select name="f_ed1" onChange="emptyRes();" style="font-weight: bold; font-size: 80%;">
                <option value="-1">-месяц------</option><option value="01">Январь</option><option value="02">Февраль</option><option value="03">Март</option><option value="04">Апрель</option><option value="05">Май</option><option value="06">Июнь</option><option value="07">Июль</option><option value="08">Август</option><option value="09">Сентябрь</option><option value="10">Октябрь</option><option value="11" selected="selected">Ноябрь</option><option value="12">Декабрь</option></select>
                <select name="f_ed2" onChange="emptyRes();" style="width: 65px; font-weight: bold; font-size: 80%;">
                <option value="-1">-Год---</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option><option value="2009">2009</option><option value="2010">2010</option><option value="2011">2011</option><option value="2012" selected="selected">2012</option></select>
                </td>
                <td rowspan=3 valign=top><table cellpadding=0 cellspacing=0 border=0><tr><td height=20 nowrap="nowrap" valign=top><label><input type="radio" class="styled" name="f_pe" onChange="emptyRes();" value="1" checked="checked" />&nbsp;все дни</label></td></tr><tr><td height=20 nowrap="nowrap" valign=top><label><input type="radio" class="styled" name="f_pe" onChange="emptyRes();" value="2" />&nbsp;только месяц</label></td></tr><tr><td height=20 nowrap="nowrap" valign=top><label><input type="radio" class="styled" name="f_pe" onChange="emptyRes();" value="3" />&nbsp;только дату</label></td></tr></table></td>
                <td rowspan=3 valign=top><table cellpadding=0 cellspacing=0 border=0><tr><td height=20>&nbsp;</td></tr><tr><td height=20 valign=top><select name="f_ed3" onChange="emptyRes();" style="font-weight: bold; font-size: 80%;">
                        <option value="-1">-месяц------</option><option value="01">Январь</option><option value="02">Февраль</option><option value="03">Март</option><option value="04">Апрель</option><option value="05">Май</option><option value="06">Июнь</option><option value="07">Июль</option><option value="08">Август</option><option value="09">Сентябрь</option><option value="10">Октябрь</option><option value="11" selected="selected">Ноябрь</option><option value="12">Декабрь</option></select>
                    </td></tr><tr><td height=20 nowrap="nowrap"><select name="f_ed4" onChange="emptyRes();" style="font-weight: bold; font-size: 80%;">
                        <option value="-1">-месяц------</option><option value="01">Январь</option><option value="02">Февраль</option><option value="03">Март</option><option value="04">Апрель</option><option value="05">Май</option><option value="06">Июнь</option><option value="07">Июль</option><option value="08">Август</option><option value="09">Сентябрь</option><option value="10">Октябрь</option><option value="11" selected="selected">Ноябрь</option><option value="12">Декабрь</option></select>
                        <select name="f_ed5" onChange="emptyRes();" style="width: 45px; font-weight: bold; font-size: 80%;">
                        <option value="-1">-день---</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19" selected="selected">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
                    </td></tr></table></td>
            </tr>
            <tr>
                <td nowrap="nowrap" valign=top align="left">Начальная (меньшая) дата:</td>
                <td nowrap="nowrap" valign=top>
                <select name="f_ed6" onChange="emptyRes();" style="width: 45px; font-weight: bold; font-size: 80%;">
                <option value="-1">-день---</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19" selected="selected">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
                <select name="f_ed7" onChange="emptyRes();" style="font-weight: bold; font-size: 80%;">
                <option value="-1">-месяц------</option><option value="01">Январь</option><option value="02">Февраль</option><option value="03">Март</option><option value="04">Апрель</option><option value="05">Май</option><option value="06">Июнь</option><option value="07">Июль</option><option value="08">Август</option><option value="09">Сентябрь</option><option value="10">Октябрь</option><option value="11" selected="selected">Ноябрь</option><option value="12">Декабрь</option></select>
                <select name="f_ed8" onChange="emptyRes();" style="width: 65px; font-weight: bold; font-size: 80%;">
                <option value="-1">-Год---</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option><option value="2009">2009</option><option value="2010">2010</option><option value="2011">2011</option><option value="2012" selected="selected">2012</option></select>
                </td>
            </tr>
            <tr><td nowrap="nowrap" valign=top align="left">Кодировка:</td>
                <td nowrap="nowrap" valign=top dir="ltr" ><label><input type="radio" class="styled" name="f_pe1" onChange="emptyRes();" value="1" checked="checked" />&nbsp;ANSI</label><label><input type="radio" class="styled" name="f_pe1" onChange="emptyRes();" value="2" />&nbsp;UTF-8</label><label><input type="radio" class="styled" name="f_pe1" onChange="emptyRes();" value="3" />&nbsp;Unicode</label></td>
            </tr>
            <tr>
                <td>
                    <input type=hidden name=f_lang value=ru>
                    <input type=hidden name=f_lang_id value=2>
                    <input type=hidden name=f_time_zone_add value=4>
                    <div onclick="f_fconfirm(80,27612)"  class="archButton">
                        <div class="inner">Выбрать в файл CSV.GZ</div>
                    </div>
                </td>
                <td colspan="3">
                <span id="f_result"></span>
                </td>
            </tr>
        </table>
 
<input type="submit">
</form>
Добавлено через 1 минуту
Как Вы выяснили, что можно получать архив с помощью GET-запроса http://rp5.ru/objects/files.fr... 000.csv.gz
?
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
19.11.2012, 04:56
попробуйте вручную составить запрос по алгоритму который я описал
а после уже можно сделать форму без проблем которая будет формировать запрос и скачивать файл

Добавлено через 1 минуту
ну вы когда наводите на ссылку скачать в левом нижнем углу браузера появляется ссылка на скачивание , вот попробуйте поизменять данные и посмотреть что меняется и сразу сами все поймете по какому принципу он фформируется

Добавлено через 1 минуту
и ссылка там кстати формируется на javascript, если поискать то можно и скрипт найти который ее формирует
1
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
19.11.2012, 05:00  [ТС]
А распаковывать архив с помощью командной строки exec или есть какая-нибудь библиотека для PHP?
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
19.11.2012, 05:12
вот есть расширение, я в нем особо не практиковался но там помоему все просто

Добавлено через 3 минуты
вот функция для извлечения там и примеры есть на странице

Добавлено через 4 минуты
извлекаете из архива апотом считываете этой функцией в массив и делаете что вам нужно с данными
1
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
20.11.2012, 02:08  [ТС]
Оказалось, что класс ZipArchive c .gz не работает.

Подскажите пожалуйста почему может не работать вот этот скрипт? Права на папку tmp стоят, файл .gz лежит там же, где и скрипт.
http://stretchfilm.byethost13.com/

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
ini_set("display_errors","1");
ini_set("display_startup_errors","1");
ini_set('error_reporting', E_ALL);
 
 $data="27612.01.11.2012.01.12.2012.1.0.0.ru.ansi.00000000.csv.gz";
  $g=tempnam('/tmp','tmp.csv');
  file_put_contents($g,$data);
  ob_start();
  readgzfile($g);
  $d=ob_get_clean();
  return $d;
 
?>
Файл tmp.csv не создается.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
20.11.2012, 02:44
http://www.php.net/manual/ru/book.zlib.php
хм у них сегодня ip адрес другой стал 219 в конце
0
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
20.11.2012, 03:07  [ТС]
Для разархивирования файла использовать эту функцию? http://www.php.net/manual/ru/f... decode.php
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
20.11.2012, 03:18
не знаю попробуйте хотя это для декодирования данных, посмотрите эту
1
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
20.11.2012, 03:29  [ТС]
Вот так заработало!


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
ini_set("display_errors","1");
ini_set("display_startup_errors","1");
ini_set('error_reporting', E_ALL);
 
 $file = gzopen("27605.01.11.2012.19.11.2012.1.0.0.ru.ansi.00000000.csv.gz", 'rb',0); 
    if ($file) { 
        $data = ''; 
        while (!gzeof($file)) { 
            $data .= gzread($file, 1024); 
        } 
echo $data;
        gzclose($file); 
    } 
?>
1
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
20.11.2012, 03:39
ну отлично
0
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
01.12.2012, 09:24  [ТС]
PHP
1
2
3
4
<?php
$h  =  file_get_contents ( 'http://rp5.ru/objects/files.from.archive/27/27605.01.11.2012.01.12.2012.1.0.0.ru.ansi.00000000.csv.gz' );
echo  $h;
?>
У меня почему-то этот код не работает. У кого-нибудь работает?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.12.2012, 09:48
для работы такого кода нужно отправить заголовки что это архив
0
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
01.12.2012, 09:52  [ТС]
Я не имею ввиду, что надо скачивать этот файл. Мне бы его хотя бы в браузер вывести, чтобы удостовериться, что данные удалось получить.
Если получиться считать этот файл в переменную, то я потом ее в файл tmp.tmp выведу. Но у меня почему-то не удается считать содержимое этого бинарника. Может таймаут от сервера слишком большой?

gzopen тоже этот URL не открывает
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2012, 14:25
vlad275, вы на локале тестируете? Скорость интернета хорошая? У меня скрипт быстро получил этот архив и вывел его в виде шикарных кракозябров .
1
3 / 3 / 1
Регистрация: 13.11.2008
Сообщений: 219
02.12.2012, 05:13  [ТС]
На бесплатном хостинге buythost. Попробую Ayola.net.

Добавлено через 12 часов 25 минут
Похоже, что бесплатные хостеры блокируют работу функций с внешними URL. Подскажите пожалуйста, может какой-нибудь директивой в .htaccess можно разблокировать?

PHP
1
2
3
4
5
6
7
8
9
10
<?php
ini_set('php_flag display_errors','on'); 
ini_set('php_value error_reporting', E_ALL);
echo "using gzopen url:<br />";
$file = gzopen("27605.01.11.2012.01.12.2012.1.0.0.ru.ansi.00000000.csv.gz", 'rb',0); 
echo $file;
echo "using file_get_contents url:<br />";
$input = file_get_contents('http://rp5.ru/objects/files.from.archive/27/27605.01.11.2012.01.12.2012.1.0.0.ru.ansi.00000000.csv.gz',FILE_BINARY);
echo $input;
?>
http://vlad275.pz9.ru/gzopen.php

Добавлено через 7 минут
allow_url_fopen Off
http://vlad275.pz9.ru/phpinfo.php

Директива "php_value allow_url_fopen On" в файле .htaccess привела к ошибке "Запрашиваемый вами сайт имеет ошибку в файле .htaccess."

Я только, что написал хосту просьбу включить эту опцию.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.12.2012, 08:16
Цитата Сообщение от vlad275 Посмотреть сообщение
Директива "php_value allow_url_fopen On" в файле .htaccess привела к ошибке "Запрашиваемый вами сайт имеет ошибку в файле .htaccess."
vlad275, тут надо писать
Code
1
php_flag allow_url_fopen On
Т.е. если On-Off - это php_flag
Если значение - php_value.
В данном случае у нас flag

Добавлено через 43 секунды
Можно CURL использовать, если не заработает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2012, 08:16
Помогаю со студенческими работами здесь

Как получать текстовые данные с сайта?
Каким образом можно с сайта gismeteo.ru получить погоду для своего города? (там на главной странице пишет ваш город)

Получать данные с сайта в реальн. времени
Вопрос - на сайте https://www.binary.com в поле спот-котировка идет постоянная подкачка котировок в реальном времени Сам самоучка по...

Скачивание архива погоды с сайта RP5.ru
Добрый день. У меня вопрос, кто нибудь когда нибудь сталкивался с задачами на скачивания архива с сайта? Если да, то подскажите какую...

Как получать информацию с сайта?
Подскажите. Хочу написать программу на с++, которая берет информацию с некого сайта. Объясните просто как брать информацию, с обработкой...

Как постоянно получать данные из БД
Сделал возможность оставлять комментарии на сайте, комменты храню в БД, заношу их туда с помощью ajax, потом вывожу в блок комментариев....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru