Парсер на c#

Folt

Client
Регистрация
16.12.2016
Сообщения
71
Благодарностей
11
Баллы
8
Всем привет!

В С# беру HTML элемент, мне нужно получить его "детей" конструкция следующего вида:
<div class="perrent"> - <!--беру данный элемент-->
<a class="main1" style="test5">тест1</a>
<a class="main2" style="test8">тест2</a>
<a class="main3" style="test13">тест3</a>
<a class="main4" style="test25">тест3</a>
</div>

Например, хочу получить элемент, класс которой = (равен) "main1" и "main3"

далее потом сам выведу его в табличку excel


p.s. Данная задача чем то похожа на парсер постов ВКонтакте, от rostonix, поскольку не силен в c#, своими силами не получается его переделать.
 

freeman

Client
Регистрация
31.07.2010
Сообщения
130
Благодарностей
138
Баллы
43
В этом тебе помогут xpath выражения. Давай конкретный пример.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
LINQ + XML тут удобнее, чем XPath
 

freeman

Client
Регистрация
31.07.2010
Сообщения
130
Благодарностей
138
Баллы
43
LINQ + XML тут удобнее, чем XPath
Категорически не согласен. Для обработки текста придумали регулярные выражения, чтобы не писать циклы и вложенные циклы с условиями. А для поиска элементов придумали xpath. Зачем городить костыли если существует специальный инструмент, который выигрывает абсолютно по всем параметрам. По скорости, функционалу, гибкости, удобству, надежности. Он создан для этих целей, и придумали его отнюдь не глупые люди.
 
  • Спасибо
Реакции: Duser, Adigen и Astraport

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Очень хочу посмотреть как вы будете в xml конвертировать немного некорректные HTML страницы :-))
так и не надо, я же именно для сугубо приведенного выше примера бы использовал, так как для остального есть XPath
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
796
Баллы
113
О боже, не мучьте вы человека этой заумью, берётся один оператор if и две регулярки, сгенерённые в конструкторе. Сниппет для регулярки гуглится на форуме.
 
  • Спасибо
Реакции: Adigen

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Код:
XElement elem = XElement.Parse(@"<div class=""perrent"">
<!--беру данный элемент-->
<a class=""main1"" style=""test5"">тест1</a>
<a class=""main2"" style=""test8"">тест2</a>
<a class=""main3"" style=""test13"">тест3</a>
<a class=""main4"" style=""test25"">тест3</a>
</div>");

XElement xfinal = elem.Elements().FirstOrDefault(x => x.Attribute("class").Value == "main1");
if (xfinal != null)
project.SendInfoToLog(xfinal.Value, false);
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
так и не надо, я же именно для сугубо приведенного выше примера бы использовал, так как для остального есть XPath
Если вас не смущает, что пример демонстрационный, а не рабочий, то конечно можно.
Но тогда проще вообще регуляркой выпарсить.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Если вас не смущает, что пример демонстрационный, а не рабочий, то конечно можно.
Но тогда проще вообще регуляркой выпарсить.
Да конечно можно, но со временем все приходят к тому, что объемы написанного кода доходят до десятков тысяч строк, а возвращаясь к определенному куску неработающего кода надо быстренько поправить что-то или разобраться что в нем написано, поэтому в данном случае удобно пользоваться xpath/xml. Это тенденция современного программирования, что легче написать больше методов/классов или другого понятного с 1 взгляда кода, чтобы не останавливаться на каждой задаче надолго.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Да конечно можно, но со временем все приходят к тому, что объемы написанного кода доходят до десятков тысяч строк, а возвращаясь к определенному куску неработающего кода надо быстренько поправить что-то или разобраться что в нем написано, поэтому в данном случае удобно пользоваться xpath/xml. Это тенденция современного программирования, что легче написать больше методов/классов или другого понятного с 1 взгляда кода, чтобы не останавливаться на каждой задаче надолго.
миллионов тысяч строк в зеннопостере) как же ты любишь поумничать
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
миллионов тысяч строк в зеннопостере) как же ты любишь поумничать
Если ты пишешь 5 строк и потом прыгаешь от радости целый день, то я рад за тебя.
Но со временем почти все приходят к тому, что изучают язык программирования и пишут код больших объемов. Плюс это делать можно и в CodeCreator и в Visual Studio
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Если ты пишешь 5 строк и потом прыгаешь от радости целый день, то я рад за тебя.
Но со временем почти все приходят к тому, что изучают язык программирования и пишут код больших объемов. Плюс это делать можно и в CodeCreator и в Visual Studio
а я могу поинтересоваться, откуда информация про почти всех? делал какой-то опрос? статистику собирал?
Как писал выше, ты чертовски любишь рисоваться. Есть один пассажир с востока, который старается фраернуть мифическими состояниями, темами, знаниями, способностями в кодинге. Ну а ты что-то типа его протеже, пока только мифическими десятками тысяч строк кода в зенно фраеришь)
Всегда пытался понять, перед кем тут может возникнуть жгучие желание так хвост распушивать? Пока не понял, видно не судьба)
 
  • Спасибо
Реакции: Sanekk, freeman и Adigen

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
а я могу поинтересоваться, откуда информация про почти всех? делал какой-то опрос? статистику собирал?
Как писал выше, ты чертовски любишь рисоваться. Есть один пассажир с востока, который старается фраернуть мифическими состояниями, темами, знаниями, способностями в кодинге. Ну а ты что-то типа его протеже, пока только мифическими десятками тысяч строк кода в зенно фраеришь)
Всегда пытался понять, перед кем тут может возникнуть жгучие желание так хвост распушивать? Пока не понял, видно не судьба)
Четко и по существу, даже нечего добавить.
Сори за флуд!
 
  • Спасибо
Реакции: doc

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
а я могу поинтересоваться, откуда информация про почти всех? делал какой-то опрос? статистику собирал?
Как писал выше, ты чертовски любишь рисоваться. Есть один пассажир с востока, который старается фраернуть мифическими состояниями, темами, знаниями, способностями в кодинге. Ну а ты что-то типа его протеже, пока только мифическими десятками тысяч строк кода в зенно фраеришь)
Всегда пытался понять, перед кем тут может возникнуть жгучие желание так хвост распушивать? Пока не понял, видно не судьба)
Да конечно же перед тобой похвастаться хочу очень сильно, вот и пишу про код в 10 к строк.
Мне стату неоткуда взять (зенке всего пару лет), ведь 99.9% кодеров делают программы в коде, а не кубиками, плюс со временем большинство переходят на это
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 163
Благодарностей
743
Баллы
113
плюс со временем большинство переходят на это
Судя по тому, что многое что есть в инструментарии для работы с кодом, сделано через одно место и очень слабо развивается, далеко не большинство
 

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