Как правильно составить путь XPath

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
//p[contains(@class,'article-render')][not(/figure)]
Я так пробовал, он и так работает: //p[contains(@class,'article-render')]

Но не все статьи с такой структурой. Вот например в этой статье Жиросжигающий салат с капустой для похудения. 3 раза в день для стройного тела, упругой кожи и уменьшения объемов | ПП, ДИЕТЫ, ПОХУДЕНИЕ | Яндекс Дзен (yandex.ru) неправильно работает
71527


Эти элементы не парсит, а их тоже нужно парсить
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
Последнее редактирование:

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113

baracuda

Client
Регистрация
19.06.2013
Сообщения
790
Благодарностей
277
Баллы
63
лучше вот так привязку делай. а дальше от печки танцы уже.
C#:
(//*|not/figure)[contains(@class,"article-render__block")]
 
Последнее редактирование:

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Подскажите почему берется только первый элемент?
C#:
string articleMiddle = doc.DocumentNode.SelectSingleNode("//*[contains(@class,'article-render')]//p|//h3").InnerText.HtmlDecode();//Парсим текст статьи
project.Variables["article_text"].Value = articleMiddle;
В браузере все элементы нужные выделяются. А в постере только первый парситься.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113
Подскажите почему берется только первый элемент?
C#:
string articleMiddle = doc.DocumentNode.SelectSingleNode("//*[contains(@class,'article-render')]//p|//h3").InnerText.HtmlDecode();//Парсим текст статьи
project.Variables["article_text"].Value = articleMiddle;
В браузере все элементы нужные выделяются. А в постере только первый парситься.
я конечно незнаю что за парсинг у вас, но что то мне подсказывает что метод SelectSingleNode всегда берет один элемент :-)
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
я конечно незнаю что за парсинг у вас, но что то мне подсказывает что метод SelectSingleNode всегда берет один элемент :-)
Это я уже понял. Накидал вот такой код:
C#:
HtmlNodeCollection collArticleMiddle = doc.DocumentNode.SelectNodes("//*[contains(@class,'article-render')]//p|//h3");//Обьявляем коллекцию

    // Перебираем коллекцию элементов
    string articleMiddle ="";
        foreach (HtmlNode elElements in collArticleMiddle)
        {
            //получаем текст
            articleMiddle = elElements.InnerText.HtmlDecode();
}
        project.Variables["article_text"].Value = articleMiddle.ToString();
Но возникла проблема, теперь после переборки коллекции в переменной "article_text" сохраняется только последний элемент. Не пойму как в переменную "article_text" сохранить все элементы коллекции.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113
Это я уже понял. Накидал вот такой код:
C#:
HtmlNodeCollection collArticleMiddle = doc.DocumentNode.SelectNodes("//*[contains(@class,'article-render')]//p|//h3");//Обьявляем коллекцию

    // Перебираем коллекцию элементов
    string articleMiddle ="";
        foreach (HtmlNode elElements in collArticleMiddle)
        {
            //получаем текст
            articleMiddle = elElements.InnerText.HtmlDecode();
}
        project.Variables["article_text"].Value = articleMiddle.ToString();
Но возникла проблема, теперь после переборки коллекции в переменной "article_text" сохраняется только последний элемент. Не пойму как в переменную "article_text" сохранить все элементы коллекции.
articleMiddle = articleMiddle + "сюда надо вставить коды преноса, на память не помню" + elElements.InnerText.HtmlDecode();
 
  • Спасибо
Реакции: cherus09

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

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