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

Выбрать заданный тег и удалить его содержимое

23.08.2022, 20:45. Показов 1509. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Занимаюсь парсингом одного сайта, использую библиотеку AngleSharp, считала код со страницы, кусок кода прилагается. Предстала такая задача: нужно считать содержимое тега div без содержимого тега table, то есть типо игнорировать данный тег. Как-то можно так сделать? Подскажите пожалуйста

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div  itemprop='administrationRoute'>
&emsp;Внутрь. Таблетки рекомендуется запивать стаканом воды.
<br>&emsp;Взрослым. 10 мг (1 табл.) 1 раз в сутки. 
<br>&emsp;Отдельные группы пациентов.
<br>&emsp;Пациенты пожилого возраста. Нет необходимости в снижении дозировки у пожилых пациентов, если функция почек не нарушена.
<br>&emsp;Таблица 1.
<br>&emsp;Дозирование у взрослых пациентов с почечной недостаточностью.
<table> <tr> <td> Почечная недостаточность </td>
<td> Cl креатинина, мл/мин </td>
<td> Режим дозирования </td>
</tr> 
<tr> <td> Норма </td> <td> ≥80 </td> <td> 10 мг/сут </td> </tr> 
</table>
<br>&emsp;Пациенты с нарушением функции печени. Пациентам с нарушением только функции печени коррекции режима дозирования не требуется.
<br>&emsp;У пациентов с нарушением и функции печени, и функции почек, рекомендуется коррекция дозирования ( см табл. 1 выше).
</div>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2022, 20:45
Ответы с готовыми решениями:

Как удалить парный тег, оставив его содержимое?
Имеем: &lt;span style=&quot;color: red;&quot;&gt;text&lt;/span&gt; Нужно оставить только text: .replace(/&lt;span style=\&quot;color:...

Вытащить содержимое блока и его тег
Как вытащить по мимо контента блока, вытащить еще и его тег...

Убрать тег <hide> и его содержимое
Суть: поиск на моем форуме (движке) мне выдает скрытое содержимое под тегом &lt;hide&gt; &lt;hide...

3
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
23.08.2022, 22:04
Цитата Сообщение от AlexPes Посмотреть сообщение
считать содержимое тега div
под содержимым имеется в виду текстовое содержимое ?
примерно так, прямо в браузере набрал, нет среды разработки
C#
1
2
3
4
5
var divElem = // тег div 
 
var content =  divElem.Descendents()
        .Where(tag => tag.NodeName.ToLower() != "table")
        .Select(t=>t.TextContent).ToList();
в content будет список строк, кроме строк таблицы
0
2 / 2 / 0
Регистрация: 08.03.2020
Сообщений: 141
29.08.2022, 11:41  [ТС]
Скажите пожалуйста, что вы подразумеваете под переменной divElem, какого она формата? Это string переменная, XmlDocument или тип из библиотеки anglesharp?

Добавлено через 1 час 30 минут
Поясню ситуацию подробнее:
я считываю все данные со страницы как текст, затем привожу его к типу IDocument, чтобы работать с библиотекой AngleSharp. Далее я достаю заголовок документа. Потом чтобы найти определенную часть текста обрезаю его в строковом формате. Обрезанную версию привожу к типу IDocument и работаю с ним.
Вероятно, это не самый лучший вариант, как достать текст из нужных тегов, но теги на сайте не имеют никаких идентификаторов, например айдишек, поэтому пришлось изворачиваться. Вот одна из страниц сайта https://kiberis.ru/?p=11988

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
//Действующее вещество
            string tagActiveSub = "<h2 >Действующие вещества</h2>";
//переменная для информации о препарате
            Medicine currentPill = new Medicine();
 
            WebRequest req = WebRequest.Create(@"" + Http);
            WebResponse resp = req.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
 
             //Текст с интернет-страницы
            var text = sr.ReadToEnd();
 
            using var context = BrowsingContext.New(Configuration.Default);
 
            //Считали текст со страницы
            using var doc = await context.OpenAsync(req => req.Content(text));
 
            //Достали имя
            var name = doc.QuerySelector("title").TextContent.Trim();
 
            name = name.Split(':')[0];
            currentPill.name = name;  
 
            //Активное вещество
            //Вырезается кусок текста до найденного тега
            currentPill.activeSubstance = text.Substring(text.IndexOf(tagActiveSub) + tagActiveSub.Length);
            //Вырезается кусок текста после найденного тега
            currentPill.activeSubstance = currentPill.activeSubstance.Remove(currentPill.activeSubstance.IndexOf("</ul>"));
           
 
            var allActive = (await context.OpenAsync(req => req.Content(currentPill.activeSubstance))).GetElementsByTagName("li");
            var actives = allActive[0].TextContent.Trim();
            currentPill.activeSubstance = makeCorrectString_1(actives).Trim();

Если возвращаться к начальному вопросу данной темы, то там аналогичная ситуация. У меня есть html код в виде строки, и надо достать содержимое тега div без содержимого тега table, table внутри div.
Предложенный выше способ решения не исключает содержимое тега table, к тому же один и тот же текст дублируется несколько раз. Для выполнения предложенной команды привела переменную divElem к типу IDocument. Это верно?


Как все-таки можно достать нужный текст?
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
29.08.2022, 13:27
Лучший ответ Сообщение было отмечено AlexPes как решение

Решение

Цитата Сообщение от AlexPes Посмотреть сообщение
У меня есть html код в виде строки, и надо достать содержимое тега div без содержимого тега table, table внутри div.
поправил,
проверил работает:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
      // найти <div itemprop="administrationRoute">
        var divElem = doc.Body.QuerySelector("div[itemprop='administrationRoute']");
 
            // найти таблицу 
            var child = divElem.QuerySelector("table");
            // удалить таблицу
            divElem.RemoveChild(child);
 
            // выбрать текст всех потомков
            // и сложить в список 
            var content = divElem.Descendents()
            .Select(t => t.TextContent).ToList();
 
        // вывести в консоль
            foreach (var str in content)
            {
                Console.WriteLine(str);
            }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.08.2022, 13:27
Помогаю со студенческими работами здесь

Найти заданный текст и удалить тег, в который текст заключен
Всем привет, есть такого вида xml файл &lt;ns:Document&gt; &lt;ns:Transfer&gt; &lt;tts:Header&gt; ...

Найти из текста символы и удалить его, включая его содержимое
Доброго вечера всем! Нужно разработать программу, которая будет находить текст - &quot;*== TEXT ==&quot;, где TEXT - абсолютно случайное...

Получить тег <imgsrc="..." /> и заменить его содержимое
Получить тег &lt;imgsrc=&quot;...&quot; /&gt; и заменить его содержимое

В файле методом бинарного поиска найти заданный элемент и удалить его
Pascal.abc, Работа с текстовыми файлами В файле методом бинарного поиска найти заданный элемент и удалить его.

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


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru