[SOLVED] Как подключить и использовать FizzlerEx/Fizzler

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
Помогите подключить FizzlerEx или Fizzler.
Покажите пожалуйста пример использования.

В ExternalAssemblies скопировал библиотеки из скачанного архива FizzlerEx:
  • Fizzler.dll
  • Fizzler.Systems.HtmlAgilityPack.dll
  • HtmlAgilityPack.dll
Добавил ссылки из GAC:
  • Fizzler.dll
  • HtmlAgilityPack.dll
  • System.Xml
  • System.Web
Директивы using:
  • using HtmlAgilityPack;
  • using Fizzler;
  • using System.Web;
  • using System.Xml;
Свой C# код:
Код:
var web = new HtmlWeb();
var document = web.Load("http://example.com/page.html")
var page = document.DocumentNode;

foreach(var item in page.QuerySelectorAll("div.item"))
{
    var title = item.QuerySelector("h3:not(.share)").InnerText;
    var date = DateTime.Parse(item.QuerySelector("span:eq(2)").InnerText);
    var description = item.QuerySelector("span:has(b)").InnerHtml;
}
Ошибка:
 
Последнее редактирование:

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Ошибка, пишет что не находит определения(метод не может найти),а также не может найти метод расширение, который бы в качестве первого параметра принимал HtmlNode.

Судя по примеру на сайте, надо добавить еще одно пространство имен:
using Fizzler.Systems.HtmlAgilityPack;


Плюс если покопаться в исходниках, то видно, что да, не добавлен необходимый using
 
  • Спасибо
Реакции: sentinel

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
Moadip, СПАСИБО ОГРОМНОЕ!
Показал куда смотреть и все в точку.

Добавил в директивы using Fizzler.Systems.HtmlAgilityPack и все отработало без ошибок.

Код:
using HtmlAgilityPack;
using Fizzler;
using Fizzler.Systems.HtmlAgilityPack;
using System.Web;
using System.Xml;
Еще есть вопрос к тебе.
Есть тема Помогите с парсингом текста
Ты доходчиво показал как использовать HtmlAgilityPack.

Но я не могу понять следующий участок кода:

Код:
var nodes = doc.DocumentNode
    .SelectNodes(".//div[@class='serp-item']") // взяли нужные узлы
    .Select(n => n.FirstChild)
    .Where(n => n.FirstChild.GetAttributeValue("class", "") == "serp-item__title") // взяли без рекламы
    .ToList();
Что значит n => n. ?
 
Последнее редактирование:

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
Никакого результата
Please Help!
Что не так? Выпрямите пожалуйста мне руки!

Код:
//var source = project.Variables["get"].Value;

//var web = new HtmlDocument();
//web.LoadHtml(source);

var web = new HtmlWeb();
var document = web.Load("http://www.clevertoys.com.ua/derevyanne_igrushki/derevyanne_igrushki_komarovtoys");

var nodes = document.DocumentNode.QuerySelectorAll("div#vitrina-section > div.product > div.title");

var list = new List<string>();

foreach(var item in nodes)
{
    var title = item.QuerySelector("a").InnerText;
    list.Add(title + "\r\n" + "ttttt");
}

var res = string.Join("\r\n", list);

return res;
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Moadip, СПАСИБО ОГРОМНОЕ!
Что значит n => n. ?
Ну если сильно не углубляться в детали, это лямбда.
Грубо говоря, это замена именованного метода, который нужен только в данном случае и больше вообще не пригодится, т.е. сокращает написание кода.
http://professorweb.ru/my/csharp/charp_theory/level10/10_6.php

В данном же случает лямбда используется в LINQ выражении.
Select, это берется входная коллекция, и с каждым элементом что то делается(через лямбду), на выходе получается новая коллекция.
Where, это выборка, если элемент коллекции удовлетворяет условию.
http://professorweb.ru/my/LINQ/base/level1/1_5.php

А n, это просто переменная.

Никакого результата
Please Help!
Что не так? Выпрямите пожалуйста мне руки!
С Fizzler не пробовал работать, но через xpath с помощью HtmlAgilityPack все легко вытаскивается.
Код:
.//div[@id='vitrina-section']/div[@class='product']/div[@class='title']
Вытаскивает необходимые ноды.
 
  • Спасибо
Реакции: sydoow и sentinel

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
var nodes = document.DocumentNode.QuerySelectorAll("div#vitrina-section > div.product > div.title");
Ничего не находит!
Код:
Выполнение кода C#:
var nodes = document.DocumentNode.QuerySelectorAll("div#vitrina-section div.product div.title");
Находит все что нужно:
Код:
Цифры и знаки деревянные на магнитах (Komarovtoys)
Азбука деревянная на магнитах (Komarovtoys)
Абетка дерев&#180;яна на магнітах (Komarovtoys)
Кубики деревянные &quot;Новый год&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Животные Африки&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Транспорт&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Игрушки&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Овощи&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Фрукты-ягоды&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Посуда&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Домашние животные&quot;, 4шт. (Komarovtoys)
Кубики деревянные &quot;Цифры и знаки&quot; (Komarovtoys)
Кубики деревянные &quot;Українська абетка&quot; (Komarovtoys)
Кубики деревянные Русский алфавит (Komarovtoys)
Пирамидка деревянная 7 элементов (Komarovtoys)
Пирамида деревянная МАКСИ (Komarovtoys)
Пирамидка &quot;Считалочка&quot; (Komarovtoys)
Игра &quot;Гео МАКСИ&quot; (Komarovtoys)
Игра &quot;Гео МИНИ&quot; (Komarovtoys)
Игра &quot;Гео КЛАССИК&quot; (Komarovtoys)
Найновіші пригоди Колька Колючки та Косі Вуханя (А-ба-ба-га-ла-ма-га)
Обложка для паспорта &quot;Лондон&quot;
Коврик развивающий  Сказочный город 180*200 (Babypol)
Шнуровка деревянная &quot;Джип&quot; (Komarovtoys)
Гаррі Поттер і в’язень Азкабану (А-ба-ба-га-ла-ма-га)
Сумка для обуви с карманом Space K16-601-9 (Kite)
 
Последнее редактирование:

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
Я тоже склоняюсь к тому что буду использовать HtmlAgilityPack
Хотел еще иметь просто инструмент для выборки с использованием CSS селекторов, но по ходу имеет меня он а не я его))
 
Последнее редактирование:

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
С Fizzler не пробовал работать, но через xpath с помощью HtmlAgilityPack все легко вытаскивается.
Код:
.//div[@id='vitrina-section']/div[@class='product']/div[@class='title']
Вытаскивает необходимые ноды.

Ничего не понимаю
Код:
HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load("http://www.clevertoys.com.ua/derevyanne_igrushki/derevyanne_igrushki_komarovtoys");
var nodes = document.DocumentNode.SelectNodes(".//div[@id='vitrina-section']/div[@class='product']").ToList();

return nodes.Count;


Результат ProjectMaker

 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
819
Благодарностей
231
Баллы
43
Никакого результата
Please Help!
Что не так? Выпрямите пожалуйста мне руки!

Код:
//var source = project.Variables["get"].Value;

//var web = new HtmlDocument();
//web.LoadHtml(source);

var web = new HtmlWeb();
var document = web.Load("http://www.clevertoys.com.ua/derevyanne_igrushki/derevyanne_igrushki_komarovtoys");

var nodes = document.DocumentNode.QuerySelectorAll("div#vitrina-section > div.product > div.title");

var list = new List<string>();

foreach(var item in nodes)
{
    var title = item.QuerySelector("a").InnerText;
    list.Add(title + "\r\n" + "ttttt");
}

var res = string.Join("\r\n", list);

return res;
Подскажите а как сделать клик по css селектору в instance зеннопостера? Заранее благодарен!
 

sentinel

Client
Регистрация
17.01.2016
Сообщения
35
Благодарностей
7
Баллы
8
Подскажите а как сделать клик по css селектору в instance зеннопостера? Заранее благодарен!
Насколько я понял по CSS селекторам нельзя сделать выборку элементов в инстансе.
В этой теме я уточнял как выбрать элемент с помощью CSS селектора, если я использую GET запрос.
И что бы это получилось надо подключить Fizzler.
 

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