Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ichgo
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
1

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

24.02.2012, 09:54. Просмотров 705. Ответов 3
Метки нет (Все метки)

Добрый день!
Столкнулся с проблемой, в исходном коде сайта есть:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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> в которых хранится "-" и брать собственно значение из третьего.

Я попробовал сделать с помощью паттернов, вот так:

C#
1
2
string pattern3 = @"<td class=td_field>-</td>\s*<td class=td_field>-</td>\s*<td class=td_field>(.*?)</td>";
                    res3 = Regex.Match(html2, pattern3);
Но столкнулся с проблемой, записывается лишь первая найденная переменная, и запись заканчивается, а нужны все, удовлетворяющие условию.

Подскажите как поступить.
Заранее спасибо!
А за примеры кода, заранее огромное спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2012, 09:54
Ответы с готовыми решениями:

Парсер данных с сайта
Добрый день. Ищу так сказать идеи. Хочу написать программу, которая бы...

Парсер сайта погоды Gismeteo.ru
Всем доброго времени суток. Столкнулся с проблемой и честно говоря не могу...

Как написать парсер фотографий с сайта
Всем привет.нужн парсер фотографий с 1 сайта.Поможет кто ?

Парсер сайта с подгружаемой информацией
Добрый вечер. Нужно парсить сайт, с подгружаемыми данными. Проблема в том, что...

Выборка нескольких значений по одному условию
Добрый день, помогите решить такую задачу: Есть таблица Заказчик - проект, в...

3
I2um1
Злой няш
1408 / 1106 / 374
Регистрация: 05.04.2010
Сообщений: 1,949
24.02.2012, 10:06 2
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
using System;
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>";
        foreach (Match match in Regex.Matches(html, pattern))
            Console.WriteLine(match.Groups[1].Value);
    }
}
1
ichgo
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
24.02.2012, 10:40  [ТС] 3
Спасибо большое!!!

А не подскажите, возможно ли записать полученные переменные в какой либо строковой массив, что бы их дальше использовать в запросе типа:

SQL
1
SELECT * FROM blabla WHERE blablabla IN (ТУТ ПОЛУЧЕННАЯ ПЕРЕМЕННАЯ1, ТУТ ПОЛУЧЕННАЯ ПЕРЕМЕННАЯ2, т.д.)
у меня не выходит подставлять полученные данные через запятую, все идет одной строкой =(

Заранее спасибо!
0
I2um1
Злой няш
1408 / 1106 / 374
Регистрация: 05.04.2010
Сообщений: 1,949
24.02.2012, 10:45 4
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
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);
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2012, 10:45

Фильтр нескольких столбцов по одному условию (для расписания)
Требования: - Без макросов - Excel 2003 Имеется расписание (прикреплено)....

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

Нужен парсер нескольких страниц сайта
Доброго времени суток! Проблема в следующем: есть сайт...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru