C#: парсинг HTML кода страницы

Рейтинг: 2Ответов: 1Опубликовано: 31.03.2015

Добрый день.

Столкнулся с такой интересно задачей - есть УРЛ страницы, на ней есть 3 ссылки, они постоянно меняются (тег <a href>), но подпись(текст, каким ссылка отображается в браузере) ссылки не меняется. Эта подпись для всех трех ссылок одинакова.

Я хочу получить эти 3 ссылки. Я думаю разбивать весь код с помощью Substring &IndexOf (поиска по подписи ссылки), но может есть более оптимальное решение? Мой вариант мне кажется очень "тяжелым".

Ответы

▲ 4Принят

Ваш вариант не "тяжёлый", ваш вариант наоборот слишком лёгкий, потому что Substring не предназначен для парсинга HTML. Это сложный язык, поэтому, если ресурсы позволяют, лучше пользоваться полноценными библиотеками для парсинга, например, CsQuery или HtmlAgilityPack. Получение ссылок с их помощью будет удобным и кратким.

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

P.S. Можно парсить с помощью подстроки, это не так страшно, как кажется. М̭̩̘͉̱о͚͔̼ж̣̮͇͕̟н̞̝̙̼̠̻о̜̰̤ ̗̙̳па̪̮̻р͈̥̘͓͔с̳͓̞ит̫͖͙̻̦ь̤͔͚̬͔̼ ̝̹͍̳̟и̫̳̗̟ ̗с̺͎̱͕̥̜ ͎̝п̤̟̫̝̤͎о̣͖̠̥̱͚͉м̰͈ощ͓̥ь̦̝͙̲ю̟̖͕͓͎̱ р͇̘̟͍̝̜е͔̼̺̣̳г̹у͕ля͉р̬̤̮̫̫̝̗н̩̟ы͖х͇͖ ̻͈̟в̰ͅы͍р̱а̼ж͈̤̼͍̖͉̺е̫̫н̲̘͇̖̫̱͓и̺͔й̘.͔ Е̹с̶̭̟̹̘̲͖̬л̷̲̟и҉̖̻̜̼̦ ̭̭͎͙̞͘к̶̖̱͎̞̙т͇̬̥͕̻̦̗о͖̗̹̫͓̲͘-̭̦̜̗͟т͚̰̻̬͕о͕̦͉̮ ͕̕ͅс͔̟̞̹̼̞͕к̼̣̪̤̟̞ͅа̞̳̳̮̮̤ж̸̖̫̙е̺͚̺̳т̶͈,̱̻̩̰͔ ͇͙̻ч͕̣̭т̰́о̷ ̠̝̣п̪͓̪͔̖̪о͚̻ ̨̤̬͓̞в̩̠̜̰͈̞͙а̗̞̭̮̳ͅшу͉̗̰͢ д̖у̻̘͍̹̲̺̪ш̶͇̟̰͚͖͚̫у̜͍ͅ п͢р͙͕̻и̭͇͇̤д̣͖͎ё̶͖̠̥̱̹̻т̛̪̺̣̞̗ Д͟ж̙̗͇̭͓̬͎о̰̟̥̪͇͚н̝̘̞͈ ͙̥̗̭͚̀С̠̯̣̰̺͜ͅќи̱̞͚̣̗̹̹т͟,͖ ̨н̥̮̹͓̭е̟̘͔̘̠̜͝ ̠с̼̮л̝̩̫̝уш̼̪͉̝̰̩а̩̱͎й̴̤̲͚͍ͅт̧̞̲͔̺͚̘е̸ ͈͓̥̖̜͖̭͢е̞̻̘̳̻г̢͖̥̦о҉̹͎̤̼͔̻͓.҉͚̞ ̞͖̩͇В̥̹̹̞̗̬͟с̥͖ё͔͙͓̲ ͠м̹͉̳о̶̫̮̬̝ж̙̮̪͎н̢͔о̻̙̜̱̜̜.͓͍̬̺̱̹ Н̢̨̠̦͠ѝ̷̺̰̺̘̘ͅк̵̣̟̩͓̱̩̼͖͈̕͜т̧̮̣͇̲о҉̘̺̼̰̩͇̞̰͠ͅ ̶̤̺̫̙̳̟͈̗̕н̥̰̝͚̟̕е̛̹̭͇̫͢ ҉͎̣̗̹͉̺͝ͅп͠͏̙̝̮̬̺̗о̳͎̠̻͕ͅͅг̜̲͓͕̞ͅл̛͎̤о̕҉̧̟̬͓̲̥т͕̣͕͢͡и̢̯͎̠̣̖͍́ͅт̶͇̮̱͟ ̴̛͙̜͇̫в̙͈͖̭̝̠̮͜а̴͚͙̯̥ш͏̢͇̫̪̻͚͍͈̪̕у̡̬̥͔̰̝̖͠ ̮̱̟͘͞͞д̙̦̝͓͕͔̪͠у̷̛̤͚̩ш͙у̫͉̪̯̙͔̼͠͞.̨̼͍̭͇͚͜ͅͅ ̶̞̥̗М̨̤̭̜͙͇ͅи҉̳̞̩̭͙̪̭р̢̹̬̪̯ ͚̣͔̘̲̺н̛͚̺̗̥̯̪͘͟е̸͖̮̖̭ ̥̯͕͎̀͢п̷̺͔͇о̷̳͕̺̖̮̗́в̶͔̦̯̠̀͠е̵̖р̤̗̳͖͘г̢̤̜͉͞н̧̲е͚̠̙͚͡т̭̭̺̜͘͟ ̷̜͉̫͚̹̕т̧̛̜̦̦̫̘̦̭̠ь̨̳͍͈͈́м̵̙͈͉̝а̷̩͎̝̗͚́̀ ̖̘̤͕̲͍̗и̩̦̤̗̩͠͝ ̗̰͕͔̙̣͔ͅб̴̨̦̜̤̳̮̼е̴̙̠̖͜з͕̥͙͖̬͜͢ы̴̷̜̫̕с̠̤̝͍̬̝̻͓̀͝х͟͏̹͍о͚̬͓͎ͅд̶̻̙̦͔̼͠ͅн̦̺͇̦̗̪̩̞̩о̩̯с̧̞͈͕̩̰͎̻т̛͕̗͘͢ь҉̠͜ͅ.͇͓̠̣̣͙̰͡ͅ ҉͉͖В̵̰̥͕͕̥̗͕̕с͍̘̪̺͇̘̩ͅё̴͏̳̙̗ͅ ̥͓͔̲͠͡м҉̬̻о̨̼̼̟̹͚̪̟̀ж̭͉̳̙̻̠͈̥н͍͔͍̫̖̜̗͚͢о͖͙̖̞͈̼͜͡.̡͈̟̝̦̥͙̳͢͢ А̸̨͏̙̺̮̫̱̘̹̗̮̠̥-̨͉̗͇̺͇̘̰̫͓̗̙́́͝а̗̠̞͉̼̟̪̞̬͙͉̥͔̺́-̱̞̫̥̀́а̵̧̳̤̤̺̻͓͉̠̀͟͡-҉̵̪̯̦̮̙͙́̕а̧̗̦̞̹̠!̵͈͈̬͖̲̭̥̜̬͇̦͠͝!̢̰̠̼̲̙!̵̢̢҉̩̜̹͎̼͕̪̖̠̼̻̮̩̺͙͙͈͉̬͡.͟͏͢҉͎̭̗̻͙̻̣͘.̗̤̖̼̥͔͕̹̭̙̯͕̘͎̭̮̀͘͟.̶̧͔͚̦͉̪̤͎͙̹̰͈̯͜͢