парсинг Html странички на Asp.

Тема в разделе ".NET", создана пользователем labas, 26 ноя 2008.

  1. labas

    labas Гость

    Стоит задача:

    1,парсинг страницы хххх.html
    2, распечатать из нее таблицу <table id="ууу">. Естественно в хххх.html есть много других таблиц, текста и другого мусора.

    Помогите разобраться плз!
    ....... или хотя бы подскажите каким путем это лучше реализовывать :о(

    HTML переводить в XML-файл и из них тянуть инфу?...а если парсинг каждый день несколько раз делать надо будет?
    Или сохранить текст из файла в ...куда?..... стринг? масив? или еще куда то?
    ......а может можно ""на лету обрабатывать, без сохранения файла?
     
  2. etc

    etc Гость

    Регулярные вырвжения должны помочь.
     
  3. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    для явы есть куча парсеров которые позволяют работать с html как с xml. поищите анологи для дотнета.
    регулярные выражения всме хороши, вот только кривая обучения ну очень крутая=)
     
  4. etc

    etc Гость

    Это да, но есть куча тулзов, которые помогают. :(
     
  5. labas

    labas Гость

    то, что с регулярными выражениями придется разбираться уже вижу.

    а что с кривой обучения?.......На первый взгляд там ничего особенно сложного нет.........или это только на первый взгляд? :(
     
  6. etc

    etc Гость

    Все относительно.
     
  7. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Делал похожую задачу следующим образом. На просторах инета попадается такая либа как SgmlReaderDll.dll. В ней содержится полезный класс SgmlReader, с помощью которого можно перегонять HTML в XHTML примерно таким путем:
    Код (Text):
    string inputHtml = ...; // HTML-код распарсиваемой странички

    SgmlReader reader = new SgmlReader();
    reader.DocType = "HTML";
    reader.InputStream = new StringReader(inputHtml);

    StringWriter sw = new StringWriter();
    XmlTextWriter w = new XmlTextWriter(sw);

    reader.Read();
    while (!reader.EOF)
    {
    w.WriteNode(reader, true);
    }

    w.Flush();
    w.Close();

    string xhtml = sw.ToString(); // получили XHTML
    Далее остается этот XHTML подвергнуть XSLT-преобразованию, которое и выдернет нужную табличку. Сам XSLT можно вынести в какие-нибудь внешние ресурсы/настройки и править в случае изменения структуры анализируемой странички.
    Составить XSLT, который просто найдет и выдернет элемент table с определенным id, - задача не слишком сложная, я думаю. Работает сие достаточно шустро (на загрузку странички, во всяк, времени уходило больше).
     
  8. etc

    etc Гость

    LuMee Даже если пойти этим путем, то непонятно зачем XSLT-преобразованию ... xpath нормально должен справится ...
     
  9. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Ну в принципе да. У меня там просто посложнее обработка делалась малясь. В данном случае XPath'а хватить должно.
     
  10. labas

    labas Гость

    LuMee , за код спасибо..а можно совсем разжевать куда его кидать, как подвергать XSLT-преобразованию и выводить таблицу? :)

    Знаю, что вопросы дурацкие, но никогда с этим не пересекалась :о( а одновременно разбираться с несколькими вещами - дело долгое :о/
     
  11. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    XSLT, как уже выяснили, не нужен, можно продолжить приведенный мною выше фрагмент так:
    Код (Text):
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(xhtml);
    XmlNode node = xmlDoc.SelectSingleNode("descendant::table[@id='yyy']");
    Теперь в node содержится узел, соответствующий искомой таблице. Если нужно вывести это добро, скажем, в консоль, то можно сделать так:
    Код (Text):
    XmlTextWriter writer = new XmlTextWriter(Console.Out);
    writer.Formatting = Formatting.Indented;
    node.WriteTo(writer);
     
Загрузка...
Похожие Темы - парсинг Html странички
  1. Dragon108
    Ответов:
    0
    Просмотров:
    224
  2. Shouldercannon
    Ответов:
    1
    Просмотров:
    477
  3. acelash
    Ответов:
    1
    Просмотров:
    438
  4. seo-sub
    Ответов:
    14
    Просмотров:
    1.513
  5. viboxjuwin
    Ответов:
    0
    Просмотров:
    869

Поделиться этой страницей