• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

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

  • Автор темы Автор темы labas
  • Дата начала Дата начала
L

labas

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

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

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

HTML переводить в XML-файл и из них тянуть инфу?...а если парсинг каждый день несколько раз делать надо будет?
Или сохранить текст из файла в ...куда?..... стринг? масив? или еще куда то?
......а может можно ""на лету обрабатывать, без сохранения файла?
 
Регулярные вырвжения должны помочь.
 
для явы есть куча парсеров которые позволяют работать с html как с xml. поищите анологи для дотнета.
регулярные выражения всме хороши, вот только кривая обучения ну очень крутая=)
 
то, что с регулярными выражениями придется разбираться уже вижу.

а что с кривой обучения?.......На первый взгляд там ничего особенно сложного нет.........или это только на первый взгляд? :(
 
Делал похожую задачу следующим образом. На просторах инета попадается такая либа как SgmlReaderDll.dll. В ней содержится полезный класс SgmlReader, с помощью которого можно перегонять HTML в XHTML примерно таким путем:
Код:
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, - задача не слишком сложная, я думаю. Работает сие достаточно шустро (на загрузку странички, во всяк, времени уходило больше).
 
LuMee Даже если пойти этим путем, то непонятно зачем XSLT-преобразованию ... xpath нормально должен справится ...
 
LuMee Даже если пойти этим путем, то непонятно зачем XSLT-преобразованию ... xpath нормально должен справится ...
Ну в принципе да. У меня там просто посложнее обработка делалась малясь. В данном случае XPath'а хватить должно.
 
LuMee , за код спасибо..а можно совсем разжевать куда его кидать, как подвергать XSLT-преобразованию и выводить таблицу? :)

Знаю, что вопросы дурацкие, но никогда с этим не пересекалась :о( а одновременно разбираться с несколькими вещами - дело долгое :о/
 
XSLT, как уже выяснили, не нужен, можно продолжить приведенный мною выше фрагмент так:
Код:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xhtml);
XmlNode node = xmlDoc.SelectSingleNode("descendant::table[@id='yyy']");
Теперь в node содержится узел, соответствующий искомой таблице. Если нужно вывести это добро, скажем, в консоль, то можно сделать так:
Код:
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting = Formatting.Indented;
node.WriteTo(writer);
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab