Pobieranie GetAttribute("className")

0

Witam

Załóżmy że mam taką stronę www:

<DIV class="kowalski">
   <DIV class="imie">Dominik</DIV>Jan
   <DIV class="imie">Marcin</DIV>Jan
   <DIV class="imie">Łukasz</DIV>Jan
</DIV>

<DIV class="nowak">
   <DIV class="imie">Zbyszek</DIV>Jan
   <DIV class="imie">Kuba</DIV>Jan
   <DIV class="imie">Jan</DIV>Jan
</DIV>

i teraz ma taki kod C#

      string adres = "adres_strony";
      webBrowser1.Navigate(adres_strony);
      HtmlDocument doc = webBrowser1.Document;
            foreach (HtmlElement element2 in doc.All)
            {
                    HtmlElementCollection childDivs = element2.Children;
                    foreach (HtmlElement element in childDivs)
                    {
                        if (element.GetAttribute("className").Contains("imie"))
                        {
                            imie = element.InnerText;
                        }
                    }
             }

i pytanie

Jak prawidłowo, bez kombinowania dopisać do
if (element.GetAttribute("className").Contains("imie"))
coś takiego tego by szukało samych imion Kowalskich?
Ponieważ obecnie kod pobierze wszystkie imiona.

Mógł bym to zrobić pewnie tuzinem IFów, regexów, ale pewnie jest wygodniejszy sposób, żeby były dwa warunki po sobie CONTAINS

1

Nie znam tego API i nie chce mi się teraz googlować, ale tak na chłopski rozum:
element2 to powinien być ten DIV gdzie masz nazwisko jako class, to tam by wypadało dać ifa, albo w foreach u i continue jak nie spełnia warunku, albo lepiej - zrobić to przez LINQ.

0

Rzucę okiem na LINQ, tylko że ten kod HTML jest tak naprawdę zwykłą stroną HTML, w której są zaszyte podobne informacje do tych co podałem, więc nie jest tak ładny jak podałem, są w nim dziesiątki różnych niepotrzebnych DIVów itp.
Może LINQ też sobie poradzi z tym :-)

0

Na pewno jest prostszy sposób. Selenium sobie z tym radzi. Może XPath po prostu w takim razie?
Dużo lepiej by było jakbyś nie miał strony tylko jsona albo XML.

0

Może od razu firma a wyśle swoją bazę klientów firmie b. Chodzi o pobieranie danych z stron zewnętrznych nie powiązanych w żaden sposób z twoją firma oraz programem.

 
 if (element.GetAttribute("className").Contains("imie")&&element.Attribute == twojaZmienna)

Ja bym zrobił to tak nie wiem czy element. Attribute takie polecenie jest. Ale chyba wiesz o co mi biega

1 użytkowników online, w tym zalogowanych: 0, gości: 1