Парсинг в список url(s) через C#?

Master_slave

Client
Регистрация
22.05.2016
Сообщения
17
Благодарностей
0
Баллы
1
Привет всем!
Столкнулся с проблемкой оптимизации своего шаблона.
У меня 3 блока в ПМ по условиях парсят линки. Разница только в CSS-селекторах.
Я хотел обьеденить их в один C# блок, но что-то пошло не так...
Я конвертировал 1й блок парсинга в C# и понял, что там нету пути к списку в который я вкладываю найденые url. Хотя в ЗП и ПМ, через екшн парсинга, все работает ОK!
Вопрос: как мне обьеденить мои 3 блока парсинга (разница только в CSS-селекторах) в 1н? Chsat GPT не помог ( он постоянно прописывает путь к списку, которого в пм C# коде, почему-то, нет(

1й блок
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;
// Получаем атрибут "href" всех элементов, соответствующих пути "div.a-section>h2:nth-child(1)>a:nth-child(1)"
var attributes = ZennoPoster.Parser.ParseByCssSelector(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "div.a-section>h2:nth-child(1)>a:nth-child(1)", "href", true).ToList();
// Фильтруем элементы
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
// Выбираем элементы из диапазона "0-1"
attributes.Range("0-1");

2-й блок
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;
// Получаем атрибут "href" всех элементов, соответствующих пути "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>div>div>div>h2>a"
var attributes = ZennoPoster.Parser.ParseByCssSelector(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>div>div>div>h2>a", "href", true).ToList();
// Фильтруем элементы
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
// Выбираем элементы из диапазона "0-1"
attributes.Range("0-1");

3-й блок
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;
// Получаем атрибут "href" всех элементов, соответствующих пути "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>span>a"
var attributes = ZennoPoster.Parser.ParseByCssSelector(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>span>a", "href", true).ToList();
// Фильтруем элементы
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
// Выбираем элементы из диапазона "0-1"
attributes.Range("0-1");

Как это обьеденить в 1н C# код?

Всем спасибо за ответ!!!
 
Последнее редактирование:

Master_slave

Client
Регистрация
22.05.2016
Сообщения
17
Благодарностей
0
Баллы
1
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;

string[] selectors = new string[]
{
"div.a-section>h2:nth-child(1)>a:nth-child(1)",
"html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>div>div>div>h2>a",
"html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>span>a"
};

List<string> hrefList = new List<string>();

foreach (string selector in selectors)
{
var attributes = ZennoPoster.Parser.ParseByCssSelector(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, selector, "href", true).ToList();
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
attributes.Range("0-1");

hrefList.AddRange(attributes.ToList());
}
 
Последнее редактирование:

Master_slave

Client
Регистрация
22.05.2016
Сообщения
17
Благодарностей
0
Баллы
1
этот код сохраняет линки в переменную, а как сохранять их в список?

Линки в переменную:
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;

string[] selectors = new string[]
{
    "div.a-section>h2:nth-child(1)>a:nth-child(1)",
    "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>div>div>div>h2>a",
    "html>body>div>div>div>div>div>span>div>div>div>div>div>div>div>div>span>a"
};

List<string> hrefList = new List<string>();

foreach (string selector in selectors)
{
    var attributes = ZennoPoster.Parser.ParseByCssSelector(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, selector, "href", true).ToList();
    attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
    attributes.Range("0-1");

    hrefList.AddRange(attributes.ToList());
}

// Now, hrefList contains the combined results from all three blocks

// To add the found URLs to a text variable in Zennoposter with a separator:
string foundUrlsVariableName = "Found_urls";
string separator = "\n"; // Choose an appropriate separator

string joinedUrls = string.Join(separator, hrefList);
project.Variables[foundUrlsVariableName].Value = joinedUrls;
 

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