1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
1

Парсинг страницы для поиска самой ранней успешной сдачи задания

18.08.2014, 13:45. Показов 1255. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста. Надо пропарсить страницу, а именно вот эту http://acm.timus.ru/status.asp... hor=133892, чтобы выводила самую ранюю успешную сдачу этой задачи. Выводит только ДАТУ, остальное, имя студента, на каком языке и т.д. это не нужно. Только самую первую успешную попытку и только выводить её дату. И, если не сложно, объясните, как можно сравнить две даты. Скажем та ссылка, которая была до этого и http://acm.timus.ru/status.asp... hor=133885. Нужно сравнить, кто раньше решил 1014 задачу.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2014, 13:45
Ответы с готовыми решениями:

Вывести имя файла с самой последней или самой ранней датой последнего использования
Здравствуйте. Помогите с написанием bat файла. Разработать командный файл, который бы выводил в...

Запрос для определения самой ранней даты рождения
Создать запрос на поиск самой ранней даты рождения сотрудников офиса в организации «Стулья» и...

Вывести имя файла с самой последней или с самой ранней датой последнего использования в текущем каталоге
Всем привет! Помогите, пжл., с написанием bat файла. Нужно: разработать командный файл, который...

Определить разницу в месяцах и днях между самой ранней и самой поздней датами, относящимися к заданному году
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся величины типа...

15
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 14:17 2
с помощью json-запроса (get) получаешь html-код странички. Выделяешь искомый текст и сравниваешь. А чтобы даты сравнить можно перевести дату в числовой формат если память не изменяет функцией mktime

Добавлено через 34 секунды
А вобще в инете достаточно статей по парсингу сайтов, поищи... не ленись
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
18.08.2014, 14:55  [ТС] 3
Allexxisss, вот что у меня получилось
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$data = file_get_html('http://acm.timus.ru/author.aspx?id=133892');
set_time_limit(0);
 
if($data->innertext!='' and count($data->find('td'))){
 
    foreach($data->find('.accepted') as $a){
 
        if (isset($plg->plaintext)) $plgObj = 'plgContent' . ucfirst($plg->plaintext);
        $b = $a->plaintext;
        $data2 = file_get_html('http://acm.timus.ru/status.aspx?space=1&num='.$b.'&author=133892');
  echo "<table><tr><td style = 'color: darkgreen;'>".$b."</td>";
    foreach($data2->find('.date') as $c){
        if (isset($plg->plaintext)) $plgObj = 'plgContent' . ucfirst($plg->plaintext);
        $text = "<td style='border: 1px solid black;'>".$c->plaintext."</td>";
$pattern = "|<td style='border: 1px solid black;'>Date</td>|s"; 
$text = preg_replace($pattern, "", $text); 
echo $text;
         }  
echo "</tr></table>";        
}
         }      
?>
Единственная беда - парсит всё подряд, а не первую успешную сдачу=(
0
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 15:10 4
ну так а где у тебя проверка то собственно?

Добавлено через 16 секунд
выложи полный код со всеми доп файлами
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
18.08.2014, 15:15  [ТС] 5
Вот всё, что у меня есть по парсеру. Некоторые файлы могут быть с безумным кодом, но это просто я тот или иной файл переделываю, пытаюсь что-то сделать.
Вложения
Тип файла: rar parser.ru.rar (336.5 Кб, 4 просмотров)
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
19.08.2014, 00:54  [ТС] 6
Allexxisss, что там?
0
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
19.08.2014, 12:05 7
And_Smi, на работе запара. Постараюсь сегодня посмотреть
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
19.08.2014, 12:17  [ТС] 8
Allexxisss, да понимаю, не спеши
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
21.08.2014, 15:18  [ТС] 9
Allexxisss, посмотрел? У меня есть соображения с помощью регулярных выражений провернуть, но к сожалению не понимаю их
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 15:30 10
Цитата Сообщение от And_Smi Посмотреть сообщение
У меня есть соображения с помощью регулярных выражений провернуть, но к сожалению не понимаю их
изучение их занимает 20 минут. Час - и вы мастер. Но понимаю, лень...
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
21.08.2014, 15:34  [ТС] 11
ads, не лень, въехать надо. Если вы так говорите, то я думаю вы сможете поделиться ссылкой на хорошую инфу про рег выражения? Сори за оффтоп.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
21.08.2014, 15:40 12
А поиск? согласен. Тяжело. Но хотя бы начать. https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
21.08.2014, 15:48  [ТС] 13
ads, вы сейчас настроены на то, чтобы оскорбить? Спасибо, не надо. А если вы считаете википедию источником информации то мне с вами не о чем разговаривать.
0
ads
21.08.2014, 15:51
  #14

Не по теме:

оскорбляются, обычно, желающие оскорбиться. Зря вы википедию не читали. не было бы лишних слов

0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
21.08.2014, 15:56  [ТС] 15
ads, вы меня назвали лентяем, сказали, что тяжело поиском воспользоваться и вы еще говорите, что я желающий оскорбиться? Википедию не читаю вообще так как половина информации находится ложная и этот сайт уже заблокирован для доступа у меня. Короче, разговоры ведут в некуда, если хотите о чем-то поговорить - личка открыта. Хватит оффтопить..
0
1 / 1 / 1
Регистрация: 19.12.2013
Сообщений: 161
25.08.2014, 08:27  [ТС] 16
Помогите модернизировать скрипт, а именно чтобы выводил дату только самой ранней успешной сдачи какой-либо задачи. А то выводит все даты сдач.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$data = file_get_html('http://acm.timus.ru/author.aspx?id=133892');
set_time_limit(0);
 
if($data->innertext!='' and count($data->find('td'))){
 
    foreach($data->find('.accepted') as $a){
 
        if (isset($plg->plaintext)) $plgObj = 'plgContent' . ucfirst($plg->plaintext);
        $b = $a->plaintext;
        $data2 = file_get_html('http://acm.timus.ru/status.aspx?space=1&num='.$b.'&author=133892');
  echo "<table><tr><td style = 'color: darkgreen;'>".$b."</td>";
    foreach($data2->find('.date') as $c){
        if (isset($plg->plaintext)) $plgObj = 'plgContent' . ucfirst($plg->plaintext);
        $text = "<td style='border: 1px solid black;'>".$c->plaintext."</td>";
$pattern = "|<td style='border: 1px solid black;'>Date</td>|s"; 
$text = preg_replace($pattern, "", $text); 
echo $text;
         }  
echo "</tr></table>";        
}
         }      
?>

Или этот:
PHP
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
<?php
include 'simple_html_dom.php';
require_once 'simple_html_dom.php';
$data = file_get_html('http://acm.timus.ru/author.aspx?id=133892');
set_time_limit(0);
 
if($data->innertext!='' and count($data->find('td'))){
 
foreach($data->find('.accepted') as $a){
 
if (isset($plg->plaintext)) $plgObj = 'plgContent' . ucfirst($plg->plaintext);
$b = $a->plaintext;
$data2 = file_get_html('http://acm.timus.ru/status.aspx?space=1&num='.$b.'&author=133892');
echo "<table><tr><td style = 'color: darkgreen;'>".$b."</td>";
preg_match_all('#
<tr[^>]*>
<td\sclass="id">(.+?)</td>
<td\sclass="date">(.+?)</td>
<td\sclass="coder">(.+?)</td>
<td\sclass="problem">(.+?)</td>
<td\sclass="language">(.+?)</td>
<td\sclass="verdict_ac">Accepted</td>
<td\sclass="test">(.+?)</td>
<td\sclass="runtime">(.+?)</td>
<td\sclass="memory">(.+?)</td>
</tr>
#iSsux', $data2, $matches);
if(!count($matches[0])){
die("Not found");
}
$last = count($matches[0])-1;
echo $matches[0][$last];
 
}
} 
?>
Тут я смог достичь вывода полной информации, но к сожалению она лишняя, нужна лишь дата. Минус в том, что в некоторых задачах он выводит и ошибочные сдачи задач.
0
25.08.2014, 08:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2014, 08:27
Помогаю со студенческими работами здесь

Выделение самой ранней и самой поздней даты
Нужно выделить из таблицы самую ранюю и самую позднюю дату. В таблицу надо чтобы записывалось...

Вероятность успешной сдачи экзамена
Добрый день уважаемые форумчане!. Помогите с решением одной задачи. Заранее огромное вам спасибо!!...

Вероятность успешной сдачи экзамена
Программа экзамена содержит 20 различных вопросов, из которых студент знает только 10. Для успешной...

Найти вероятность конкретного уровня подготовки студента при условии успешной сдачи им экзамена
2. В студенческой группе 3 человека имеют высокий уровень подготовки, 19 человек – средний и 3 –...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru