2016-01-17 7 views
6

In questa stringa esistono tag numero li .I vuole ottenere attributo href di un tag come questo:Come ottenere gli attributi href di un tag in questa stringa?

http://bipardeh94.blogfa.com" target="_blank 

http://avaejam.blogfa.com" target="_blank 

e ... voglio che fare questo con C# .Come fatto questo? Io uso questo codice ma questo non è completo.

int indexStartUl = _codeHtml.IndexOf("<ul"); 
      int indexEndUl = _codeHtml.IndexOf("</ul>"); 
      _codeHtml = _codeHtml.Substring(indexStartUl, indexEndUl); 

Si prega di aiutare.

<ul class="ull"> 
     <li><a href="http://bipardeh94.blogfa.com" target="_blank">باغ بلور</a><span class="ur">bipardeh94.blogfa.com</span><span class="ds">فرهنگی-خبری-علمی</span></li> 
     <li><a href="http://avaejam.blogfa.com" target="_blank">هزار نکته </a><span class="ur">avaejam.blogfa.com</span><span class="ds"> يك نكته از هزار نكته باشد تا بعد </span></li> 
     <li><a href="http://prkangavar.blogfa.com" target="_blank">روابط عمومی دانشگاه آزاداسلامی کنگاور</a><span class="ur">prkangavar.blogfa.com</span><span class="ds">اخبار دانشگاه</span></li> 
     <li><a href="http://bordekhoun.blogfa.com" target="_blank">وبلاگ اطلاع رسانی بردخون</a><span class="ur">bordekhoun.blogfa.com</span><span class="ds">اخباروگزارشات وتحلیل ها درباره بردخون</span></li> 
     <li><a href="http://mahinvare.blogfa.com" target="_blank">تدوری های نوین</a><span class="ur">mahinvare.blogfa.com</span><span class="ds">نظریه های علوم انسانی باید متحول شود</span></li> 
     <li><a href="http://zanjanuniversity.blogfa.com" target="_blank">دانشگاه زنجان</a><span class="ur">zanjanuniversity.blogfa.com</span><span class="ds">اخبار دانشگاهیان زنجان و دانشگاه آزاد زنجان و سیستم ثبت نام شهردای زنجان </span> 
     </li> 
    </ul> 
+0

aggiungi runat = 'server', ID = Nome Ai tuoi elementi Ora, puoi accedere all'attributo –

+0

È meglio usare un parser HTML/XML o almeno Regex invece di lavorare con gli indici. –

+0

Mi dispiace Ahmed Galal. Voglio creare un web crawler e questo non è possibile – programmer138200

risposta

4

È possibile utilizzare SeleniumWebDriver funzionalità:

IList<IWebElement> lis = driver.FindElements(By.CssSelector(".ull > li")); 
foreach (IWebElement li in lis) { 
    string href = li.GetAttribute("href"); 
} 

Trovate tutte WebElements con li tag che sono figli di WebElement con classe ull e l'iterazione sopra l'elenco e prendere l'attributo href.

+0

Come scaricare Selenium WebDriver? – programmer138200

+0

@ programmer138200 è possibile scaricare da [qui] (http://www.seleniumhq.org/download/) – Guy

+0

@ programmer138200 installazione [guida] (http://software-testing-tutorials-automation.blogspot.co.il/ 2011/10/how-to-download-and-install-selenium.html) – Guy

3

È possibile utilizzare Html Agility Pack

Html Agility Confezione Esempi:

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) 
{ 
    HtmlAttribute att = link["href"]; 
    att.Value = FixLink(att); 
} 
doc.Save("file.htm"); 

vicini:

How to use HTML Agility pack

http://www.mikesdotnetting.com/article/273/using-the-htmlagilitypack-to-parse-html-in-asp-net http://www.codeproject.com/Articles/691119/Html-Agility-Pack-Massive-information-extraction-f

Spero che queste informazioni vi aiuterà

+0

Scarica e aggiungi riferimento a questa dll file nel mio progetto. Quindi uso il tuo codice nel file Form2.cs ma ottengo errore in questa riga che non può accedere al costruttore interno htmldocument qui ===== >>>>> HtmlDocument doc = new HtmlDocument(); – programmer138200

+0

1-Scarica e crea la soluzione HTMLAgilityPack. 2-Nell'applicazione, aggiungere un riferimento a HTMLAgilityPack.dll nella cartella HTMLAgilityPack \ Debug (o Realease) \ bin. –

1

Per una migliore comprensione

Substring (a, b)

  • una: da cui si desidera iniziare la vostra Substring
  • B: quale sarà la lunghezza della sottostringa

Nel tuo ex si prende:

a come indice di partenza di ul

b come indice finale di ul // Errore b sarà la lunghezza dalla stringa dall'inizio alla fine di ul!

quello che dovete fare è:

int c = b - a // (will give you the inner text length) 

_codeHtml = _codeHtml.Substring(a,c); 
0

senza alcuna libreria o strumenti esterni, utilizzare la seguente riga:

var hrefs = html.Split(new[] { "href='" }, StringSplitOptions.RemoveEmptyEntries).Where(o => o.StartsWith("http")).Select(o => o.Substring(0, o.IndexOf("'"))); 

che vi darà un array con tutti i HREF, come il seguente risultato:

http://bipardeh94.blogfa.com 
http://avaejam.blogfa.com 
http://prkangavar.blogfa.com 
http://bordekhoun.blogfa.com 
http://mahinvare.blogfa.com 
http://zanjanuniversity.blogfa.com 

esempio completo disponibile all'indirizzo: this .net fiddle

Problemi correlati