Парсер сайта, копирование нескольких переменных по одному условию - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Столкнулся с проблемой, в исходном коде сайта есть:
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ1</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ2</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ3</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ4</td>
И так далее, кол-во колонок - не известно, и всегда меняется. Т.е. необходимо сделать поиск этих переменных, по условию того, что перед ними идут два тега <td> в которых хранится "-" и брать собственно значение из третьего. Я попробовал сделать с помощью паттернов, вот так:
string pattern3 = @"<td class=td_field>-</td>\s*<td class=td_field>-</td>\s*<td class=td_field>(.*?)</td>";
                    res3 = Regex.Match(html2, pattern3);
Но столкнулся с проблемой, записывается лишь первая найденная переменная, и запись заканчивается, а нужны все, удовлетворяющие условию. Подскажите как поступить. Заранее спасибо! А за примеры кода, заранее огромное спасибо!

Решение задачи: «Парсер сайта, копирование нескольких переменных по одному условию»

textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
 
class Program
{
    static void Main()
    {
        string html = @"<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ1</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ2</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ3</td>
 
<td class=td_field>-</td>
<td class=td_field>-</td>
<td class=td_field>ТУТ ПЕРЕМЕННАЯ4</td>";
 
        string pattern = @"<td class=td_field>-</td>\s*<td class=td_field>-</td>\s*<td class=td_field>(.*?)</td>";
        List<string> list = new List<string>();
        foreach (Match match in Regex.Matches(html, pattern))
            list.Add(match.Groups[1].Value);
 
        string query = string.Format("SELECT * FROM blabla WHERE blablabla IN ({0})",
            string.Join(", ", list));
        Console.WriteLine(query);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы