FizzlerEx / HtmlAgilityPack QuerySelectorВсе не работает

c# html-agility-pack

Вопрос

Я пытаюсь настроить FizzlerEx, найденный по адресу http://fizzlerex.codeplex.com/ . После добавления ссылок на мой проект, я попытался запустить код примера, указанный на веб-сайте, - весь код моего кода приведен ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;
using Fizzler.Systems.HtmlAgilityPack;


namespace Fizzler_Test
{
    class Program
    {

        static void Main(string[] args)
        {
        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;
            }
        }
}

Однако это приводит к ошибкам сборки, утверждая, что:

Error   1   'HtmlAgilityPack.HtmlNode' does not contain a definition for 'QuerySelectorAll' and no extension method 'QuerySelectorAll' accepting a first argument of type 'HtmlAgilityPack.HtmlNode' could be found (are you missing a using directive or an assembly reference?)

Казалось бы, QuerySelectorAll на самом деле не является частью HtmlNode, но, учитывая, что это официальный примерный код, взятый дословно на веб-сайте, я ожидаю, что создатели поймут, как работает их библиотека. Я в недоумении относительно того, что может быть актуальной проблемой.

Связанная с этим проблема, похоже, найдена здесь, но никакого подходящего ответа не было найдено: Fizzler и QuerySelectorAll

Популярные ответы

Казалось бы, QuerySelectorAll на самом деле не является частью HtmlNode , но, учитывая, что это официальный примерный код, взятый дословно на веб-сайте, я ожидаю, что создатели поймут, как работает их библиотека. Я в недоумении относительно того, что может быть актуальной проблемой.

Вы правы в этой части. Хотя вы не совсем правы во второй части, поскольку автор HAP не является автором FizzlerEx. Проблема в другом месте. Просто взглянув на ошибку, вы получите единственную подсказку, необходимую для решения этой проблемы.

Error   1   'HtmlAgilityPack.HtmlNode' does not contain a definition for 'QuerySelectorAll' and no extension method 'QuerySelectorAll' accepting a first argument of type 'HtmlAgilityPack.HtmlNode' could be found (are you missing a using directive or an assembly reference?)

Итак, что мы получим; он говорит нам , что не существует метод , называемый QuerySelectorAll в классе HtmlNode в пространстве имен HtmlAgilityPack . Если мы посмотрим на исходный код HAP, вы можете легко определить, что сообщение об ошибке действительно правильно, поскольку в классе, который мы рассматриваем, нет метода с таким именем.

Исходный код для HtmlAgilityPack.HtmlNode - класс

Где этот метод, который мы хотим использовать, но не можем найти?

Он находится здесь , в классе Fizzler.Systems.HtmlAgilityPack.HtmlNodeSelection .

Попробовав несколько вещей, я получаю, что код работает отлично, как есть. Проблема заключалась в расширении ссылок между Fizzler и исходным кодом HAP.

Если вы загружаете Fizzler, вы получаете HtmlAgilityPack одновременно. Когда вы добавляете ссылки в Visual Studio (при условии, что вы используете это), добавьте только

  • Fizzler.Systems.HtmlAgilityPack.dll
  • HtmlAgilityPack.dll

Очистите свое решение и перестройте его, и оно должно работать!



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow