Всем привет! Много тем уже перечитал похожих, но в них в основном какие-то частности спрашивались. Очень согласен вот с этими словами. Ну, честно говоря, вообще ничего непонятно. Понял, что информация из html парсится либо через LINQ, либо через CSS селекторы. С первым вообще не знаком, CSS знаю поверхностно. Но все равно такой вариант мне интуитивно что ли ближе, поэтому хотелось бы ответы получить в виде CSS селекторов.
Сразу вопрос: всю ли инфу можно запарсить обоими способами? Или есть только случаи, когда работает только один из способов? Или же есть случаи, где вообще нельзя?)
Теперь непосредственно к задаче. Хочу запарсить данные контактов с сайта домофонда. Например, возьмем вот эту страницу. Парсю всю страницу для начала
var parser = new HtmlParser();
var doc = parser.Parse("ссыль");
Как, например, запарсить имя? Смотрю исходник, вижу, что имя находится в блоке
div class="df_panel". Вроде бы этот блок с уникальным названием, поэтому можно сузить поиск
var div = doc.QuerySelector("div.df_panel");
Вот тут сразу начинаются вопросы. Сам разобрался, что, если в блоке div указывается название класса, то пишется так, как приведено. Если, например, div id="test", то уже запрос по-другому пишется (долго доходило на основе кучу примеров из разных форумов)
var div = doc.QuerySelector("div[id="test"");
Вот где по этому поводу что-то написано? Я так понимаю, что здесь применяются какие-то регулярные выражения. Может они аналогичные каким-то другим парсерам, как, например, написано тут, что AngleSharp очень похож на Fizzler. Но что, если у меня это локально возникшая задача, и не с какими другими парсерами я дело не имел? Как я должен понять, что именно мне писать?
Ладно, отвлекся. Див ближайший для сужения круга поиска получили. (Опять отвлекусь - кстати, а как быть, если бы его вообще не было? Можно ли каким-то образом получить определенные данные, если нет уникальных идентификаторов, посредством которых сужается постепенно зона поиска нужного значения?). Итого видим, что имя записано в тег заголовка <h6 itemprop="name">НУЖНОЕ ИМЯ</h6>. Как получить это значение? Было бы возможно вытащить имя, если бы оно было записано вообще без тега заголовка?
Пока на этом вопросы задавать перестану. Буду благодарен за любые объяснения. Желательно очень получить ответы на более общие вопросы (например, по поводу, как я предполагаю, этих регулярных выражений с хелпом или хорошими примерами), тогда может с остальной частью я и сам разберусь.