Обязательно познакомьтесь с библиотекой HtmlAgilityPack!
Вот пример, который решает Вашу проблему:
public static int GetShopIndex(string HTML, string ShopName)
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(HTML);
return doc.DocumentNode
.SelectNodes("//html//div[@class='shop-name']")? // Выбираем интересующие нас узлы по xpath
.Select((x, i) => new { Text = x.InnerText, Index = i }) // Комбинируем внутренний текст и номер узла
.FirstOrDefault(x => x.Text == ShopName)?.Index ?? -1; // Возвращаем индекс узла, текст которого равен заданному
// Если такого нет - возвращаем -1
}
Использование:
int i = GetShopIndex("<html><div class='shop-name'>rand</div><div class='shop-name'>this</div></html>", "this");
//i == 1
Если отсчет с 0 Вас по каким-то причинам не устраивает, просто добавьте единичку)
HtmlAgilityPack, достаньте из документа коллекцию упомянутых div’ов и считайте себе на здоровье – Kir_Antipov May 06 '19 at 22:39