J'essaie d'utiliser le pack Agility pour analyser certaines informations contenues dans différentes pages. Je suis un peu inquiet que l'utilisation de cette option puisse être excessive pour ce dont j'ai besoin, si c'est le cas, n'hésitez pas à me le faire savoir. Quoi qu'il en soit, j'essaie d'analyser une page de motley imbécile pour obtenir le nom d'une société en fonction du ticker. Je vais analyser plusieurs pages pour obtenir des informations sur le stock d'une manière similaire.
Le code HTML que je veux analyser ressemble à ceci:
<h1 class="subHead">
Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>
De plus, la page que je veux analyser est la suivante : http://caps.fool.com/Ticker/MSFT.aspx
Donc, je suppose que ma question est de savoir comment obtenir simplement Microsoft Corp du code HTML et devrais-je même utiliser le pack d'agilité pour faire des choses comme celle-ci?
Edit: code actuel
public String getStockName(String ticker)
{
String text ="";
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://caps.fool.com/Ticker/" + ticker + ".aspx");
var node = doc.DocumentNode.SelectSingleNode("/h1[@class='subHead']");
text = node.FirstChild.InnerText.Trim();
return text;
}
Cela vous donnerait une liste de tous les noms d'actions, pour votre exemple HTML juste de Microsoft:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");
var nodes = doc.DocumentNode.SelectNodes("//h1[@class='subHead']");
foreach (var node in nodes)
{
string text = node.FirstChild.InnerText; //output: "Microsoft Corp"
string textAll = node.InnerText; //output: "Microsoft Corp (NASDAQ:MSFT)"
}
Modifier en fonction de la question mise à jour - cela devrait fonctionner pour vous:
string text = "";
HtmlWeb web = new HtmlWeb();
string url = string.Format("http://caps.fool.com/Ticker/{0}.aspx", ticker);
HtmlAgilityPack.HtmlDocument doc = web.Load(url);
var node = doc.DocumentNode.SelectSingleNode("//h1[@class='subHead']");
text = node.FirstChild.InnerText.Trim();
return text;
Utilisez une expression xpath pour sélectionner l'élément, puis récupérez le texte.
foreach (var element in doc.DocumentNode.SelectNodes("//h1[@clsss='subHead']/span"))
{
Console.WriteLine (element.InnerText);
}