0 / 0 / 2
Регистрация: 25.11.2011
Сообщений: 39
1

Помочь подобрать регулярное выражение (парсинг пробок)

07.04.2012, 16:50. Показов 1704. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Было нужно сделать простенькое приложение которое выводит загруженность дорог по шкале Яндекса.
Нашел два места откуда можно спарсить необходимое значение.
собственно 1.yandex.ru и 2.acars.ru/probki
как выглядит код этих страниц:
участки кода содержащие информацию о пробках
1.
HTML5
1
href="http://afisha.yandex.ru/msk/events/494331/"onmousedown="cp('v11.afisha.links.4',this)">Титаник 3D</a> <span class="b-afisha__genre">премьера</span><li><a href="http://afisha.yandex.ru/msk/events/490341/"onmousedown="cp('v11.afisha.links.5',this)">Милый друг</a> <span class="b-afisha__genre">драма</span></ul></div></div></div><div class=r><div class="b-probki b-probki_yw l-block"><span class="b-probki__title b-top-title b-top-title_yw b-top-title_big "><a class="b-probki__link"href="http://maps.yandex.ru/moscow_traffic"onmousedown="cp('v11.traffic.title',this)">Пробки<i class="b-probki__icon"></i></a>4 балла<span class="b-probki__arr"title="растут"></span></span><div class="b-probki__info"><a href="http://maps.yandex.ru/moscow_traffic"class="main"onmousedown="cp('v11.traffic.more',this)">Местами затруднения</a><br><a target=""href="http://www.yandex.ru/?open-form=_traffic"onmousedown="cp('v11.traffic.personal',this)">Пробки на моём маршруте</a><br></div></div><div class="hslice" id="stocks" style="display:none;"><span class="entry-title">Котировки</span><a rel="feedurl"
2.
HTML5
1
2
3
4
5
6
7
8
9
10
11
<table class="common jamTop">
            <tr>
                <td class="jamTop1"><a style="text-decoration:none;" href="http://acars.ru/probki/"><span  style="text-decoration:underline;">Пробки</span></a></td>
 
                <td class="jamTop2">
                    <img src="http://img.acars.ru/img/home3/ico-svet.gif" alt="" />
                    <img src="http://img.acars.ru/img/home3/svet-shad.gif" alt="" />
                </td>
                                <td class="jamTop3" style="color:#B51303;"><span>4</span> балла</td>
            </tr>
        </table>


Получилось что-то такое:
C#
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
using System;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;
 
namespace lab1._2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private string TextPrint(string result, string pattern)
        {
            Match match = Regex.Match(result, pattern);
            string mess = "error";
            if (match.Success)
            {
                string Traffic = match.Groups[1].ToString();
                Traffic = Convert.ToString(Traffic);
                return Traffic;
            }
            else
            return mess;
 
        }
 
        private void ClientDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            DateTime ToDay = DateTime.Now;
            string data = ToDay.TimeOfDay.ToString();
            label2.Text = "актуально на " + data;
            string result = e.Result;
 
            string Patt = "<td class=\"jamTop3\".style=\"color:#B51303;\"><span>(.*)</span>.балла</td>";
            string mark = TextPrint(result,Patt);
            label1.Text = mark;
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string uri = "http://acars.ru/probki";
            //string uri = "http://yandex.ru";
            string data = string.Empty;
 
            var client = new WebClient();
            client.DownloadStringCompleted += ClientDownloadStringCompleted;
            client.DownloadStringAsync(new Uri(uri, UriKind.Absolute));
        }
    }
}
Но в итоге ничего не выводится. А если более точно Regex.Match не Success, как следует из проверки.

Собственно, помогите составить корректное регулярное выражение для нормального парсинга пробок. Буду благодарен

Добавлено через 2 часа 34 минуты
подобрал выражение, но теперь все парсится в неправильно кодировке
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2012, 16:50
Ответы с готовыми решениями:

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

Не могу подобрать регулярное выражение
Строка имеет вид:...

Парсинг выражения, используя регулярное выражение
Есть html код: &lt;div class=&quot;characterName&quot;&gt;Skrask&lt;/div&gt; &lt;span&gt;L W P&lt;/span&gt; Из него...

Регулярное выражение, парсинг многострочного текста
Добрый день! Имеется многострочный текст вида Мне необходимо выдрать только текст...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2012, 16:50
Помогаю со студенческими работами здесь

Парсинг bb code [url] (легкое регулярное выражение)
Надо найти в тексте все вхождения вида и заменить Помогите составить регулярное выражение, все...

Регулярное выражение (парсинг .properties)
Друзья, помогите, пожалуйста :) есть регексп (\W.\s)|(=|:| |]) нужно сделать все так, чтобы...

Регулярное выражение... парсинг ошибок oracle
Бьюсь уже целый день :) Хочу парсить ораклевые ошибки... Неохота это в цикле делать, т.к. это все...

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


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

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

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