Закинуть Html документ в HtmlElementCollection

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 008
Благодарностей
538
Баллы
113
Доброго времени суток, никак не могу разобраться как мне в хтмл странице полученную после гет запроса поиск по xpath осуществлять на c#. Может кто подсказать?


Вот запрос
C#:
var resultHttpGet2 = ZennoPoster.HttpGet(
                        url,
                        "",
                        "UTF-8",
                        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
                        5000,
                        "",
                        project.Profile.UserAgent,
                        true,
                        5,
                        nums,
                        "",
                        true);
Как мне теперь ответ засунуть в переменную типа Document что бы уже поиск элементов осуществлять
Нашел в документации вот такой пример

C#:
public static int Execute(Instance instance, IZennoPosterProjectModel project)
{
    // clear cookies
    instance.ClearCookie();
 
    // go to lessons.zennolab.com
    Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("lessons.zennolab.com");
    if (tab.IsBusy) tab.WaitDownloading();
 
    // get document
    Document doc = tab.MainDocument;
 
    // find element by tag
    HtmlElementCollection heCol1 = doc.FindElementsByXPath("/html/body/div/div[@class]");
 
    return 0;
}
Но здесь запрос через инстанс делается, мне то инстанс не нужен, у меня уже страница есть
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
545
Благодарностей
300
Баллы
63
Доброго времени суток, никак не могу разобраться как мне в хтмл странице полученную после гет запроса поиск по xpath осуществлять на c#. Может кто подсказать?
Есть такой метод от разработчиков ZP

C#:
public static int Execute(Instance instance, IZennoPosterProjectModel project)
{
    // clear cookies
    instance.ClearCookie();

    // go to lessons.zennolab.com
    Tab tab = instance.MainTab;
    if ((tab.IsVoid) || (tab.IsNull)) return -1;
    if (tab.IsBusy) tab.WaitDownloading();
    tab.Navigate("lessons.zennolab.com");
    if (tab.IsBusy) tab.WaitDownloading();

    // get document
    Document doc = tab.MainDocument;

    // find element by tag
    HtmlElementCollection heCol1 = doc.FindElementsByXPath("/html/body/div/div[@class]");

    return 0;
}
Но здесь запрос через инстанс делается, мне то инстанс не нужен, у меня уже страница есть
Тут нас интересует строчка Document doc = tab.MainDocument;. На наш гет запрос мы получаем responce с типом данных string, в котором хранится DOM, но так как он с типом данных string, нам надо его преобразовать в DOM и передать в Document doc, как это сделать не знаю, нужно гуглить оптимальный вариант.
 
  • Спасибо
Реакции: Sherminator

orka13

Client
Регистрация
07.05.2015
Сообщения
2 166
Благодарностей
2 168
Баллы
113

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 008
Благодарностей
538
Баллы
113
Через него и сделано, он то нормально хавает документ, только вот он не находит нужных элементов через xpath при том что они в хтмл документе точно есть и xpath написан верно. В итоге решил переделать на зенковскую вариацию HtmlAgilityPack'a
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 008
Благодарностей
538
Баллы
113
Есть такой метод от разработчиков ZP



Тут нас интересует строчка Document doc = tab.MainDocument;. На наш гет запрос мы получаем responce с типом данных string, в котором хранится DOM, но так как он с типом данных string, нам надо его преобразовать в DOM и передать в Document doc, как это сделать не знаю, нужно гуглить оптимальный вариант.
Спасибо, покурил вопрос по заданному направлению, в итоге сделал.
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy Ka

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