Есть код C# на поиск первого элемента, как изменить его на поиск 2ого элемента

foowee800

Новичок
Регистрация
30.11.2021
Сообщения
15
Благодарностей
1
Баллы
3
Есть код C# который находит событие: кто из команд забьёт первый гол.
Скажите пожалуйста, что изменить, чтобы парсило 2ой гол.

HTML:
<div class="smv__participantRow smv__awayParticipant"><div class="smv__incident"><div class="smv__timeBox">42'</div><div class="smv__incidentIcon"><div class="smv__incidentAwayScore">0 - 1</div><svg class="footballGoal-ico "><title>Goal</title><use xlink:href="/res/_fs/build/symbols.4416394.svg#footballBall"></use></svg></div><a href="/player/kikanovic-benjamin/GdAkQWX7/" target="_blank" class="smv__playerName"><div>Kikanovic B.</div></a></div></div>


C#:
project.Variables["rezult"].Value = "";
Regex countNew = new Regex(@"(?<=Row\ smv__).*?(?=Participant)");

for ( int b = 0;  b < 20;  b++ )
{
    HtmlElement he = instance.ActiveTab.FindElementByAttribute("div","class","smv__participantRow","regexp",b);
    string text =  he.GetAttribute("outerHtml");
    if(text.Contains("Goal"))
    {
        var rezult = countNew.Match(text).ToString();
      
        switch (rezult)
        {
            case "home":
                project.Variables["rezult"].Value = "home";
                return "home";
                break;
              
            case "away":
                project.Variables["rezult"].Value = "away";
                return "away";
                break;
        }
    }
}
project.Variables["rezult"].Value = "zero";
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 516
Благодарностей
1 314
Баллы
113
HTML:
<div class="smv__incidentIcon"><div class="smv__incidentAwayScore">0 - 1</div><svg class="footballGoal-ico "><title>Goal</title><use xlink:href="/res/_fs/build/symbols.4416394.svg#footballBall"></use></svg></div>
Что-то вы упустили, так как бот ищет строчку в странице (?<=Row\ smv__).*?(?=Participant) , а вы отправили совсем другую строчку кода страницы.
 
  • Спасибо
Реакции: foowee800

foowee800

Новичок
Регистрация
30.11.2021
Сообщения
15
Благодарностей
1
Баллы
3
HTML:
<div class="smv__incidentIcon"><div class="smv__incidentAwayScore">0 - 1</div><svg class="footballGoal-ico "><title>Goal</title><use xlink:href="/res/_fs/build/symbols.4416394.svg#footballBall"></use></svg></div>
Что-то вы упустили, так как бот ищет строчку в странице (?<=Row\ smv__).*?(?=Participant) , а вы отправили совсем другую строчку кода страницы.
Точно, в DOM нужно было выше брать...исправил
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 516
Благодарностей
1 314
Баллы
113

foowee800

Новичок
Регистрация
30.11.2021
Сообщения
15
Благодарностей
1
Баллы
3
Только второй гол, а не первый? Или первый и потом второй?
код в примере находит кто забил из команд забил 1ый гол(хозяин или гости -- по строчке: smv__participantRow smv__awayParticipant или smv__participantRow smv__awahomeParticipant ) .... подскажите как сделать тоже самое для 2ого гола
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 516
Благодарностей
1 314
Баллы
113
код в примере находит кто забил из команд забил 1ый гол(хозяин или гости -- по строчке: smv__participantRow smv__awayParticipant или smv__participantRow smv__awahomeParticipant ) .... подскажите как сделать тоже самое для 2ого гола
А если второй раз запустить этот код, разве он не найдет второй гол?

Если чисто с палками, что бы было * - 2 или 2 - *, тогда так можно попробовать, но это больше палки:
C#:
project.Variables["rezult"].Value = "";
Regex countNew = new Regex(@"(?<=Row\ smv__).*?(?=Participant)");

for (int b = 0; b < 20; b++)
{
    HtmlElement he = instance.ActiveTab.FindElementByAttribute("div", "class", "smv__participantRow", "regexp", b);
    string text = he.GetAttribute("outerHtml");
    if (text.Contains("Goal") && (text.Contains("- 2") || text.Contains("2 -")))
    {
        var rezult = countNew.Match(text).ToString();

        switch (rezult)
        {
            case "home":
                project.Variables["rezult"].Value = "home";
                return "home";
                break;

            case "away":
                project.Variables["rezult"].Value = "away";
                return "away";
                break;
        }
    }
}
project.Variables["rezult"].Value = "zero";
Либо так:
C#:
project.Variables["rezult"].Value = "";
Regex countNew = new Regex(@"(?<=Row\ smv__).*?(?=Participant)");

for (int b = 0; b < 20; b++)
{
    HtmlElement he = instance.ActiveTab.FindElementByAttribute("div", "class", "smv__participantRow", "regexp", b);
    string text = he.GetAttribute("outerHtml");
    if (text.Contains("Goal") && (text.Contains("0 - 2") || text.Contains("2 - 0") || text.Contains("1 - 1")))
    {
        var rezult = countNew.Match(text).ToString();

        switch (rezult)
        {
            case "home":
                project.Variables["rezult"].Value = "home";
                return "home";
                break;

            case "away":
                project.Variables["rezult"].Value = "away";
                return "away";
                break;
        }
    }
}
project.Variables["rezult"].Value = "zero";
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)