Парсер сайта, копирование нескольких переменных по одному условию - C#
Формулировка задачи:
Добрый день!
Столкнулся с проблемой, в исходном коде сайта есть:
И так далее, кол-во колонок - не известно, и всегда меняется.
Т.е. необходимо сделать поиск этих переменных, по условию того, что перед ними идут два тега <td> в которых хранится "-" и брать собственно значение из третьего.
Я попробовал сделать с помощью паттернов, вот так:
Но столкнулся с проблемой, записывается лишь первая найденная переменная, и запись заканчивается, а нужны все, удовлетворяющие условию.
Подскажите как поступить.
Заранее спасибо!
А за примеры кода, заранее огромное спасибо!
<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 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);
}
}