Comment puis-je obtenir tout le contenu à l&#39;intérieur <td> balise utilisant un pack d&#39;agilité HTML?

c# html-agility-pack screen-scraping

Question

J'écris donc une application qui fera un petit grattage d'écran. J'utilise HTML Agility Pack pour charger une page HTML entière dans une instance de HtmlDocoument appelée doc . Maintenant, je veux analyser ce doc, à la recherche de ceci:

<table border="0" cellspacing="3">
<tr><td>First rows stuff</td></tr>
<tr>
<td> 
The data I want is in here <br /> 
and it's seperated by these annoying <br /> 's.

No id's, classes, or even a single <p> tag. </p> Just a bunch of <br />  tags.
</td> 
</tr> 
</table> 

Il me faut donc simplement obtenir les données dans la deuxième rangée. Comment puis-je faire ceci? Devrais-je utiliser un regex ou autre chose?

Mise à jour: Voici comment je charge mon doc

<table border="0" cellspacing="3">
<tr><td>First rows stuff</td></tr>
<tr>
<td> 
The data I want is in here <br /> 
and it's seperated by these annoying <br /> 's.

No id's, classes, or even a single <p> tag. </p> Just a bunch of <br />  tags.
</td> 
</tr> 
</table> 

Réponse acceptée

Puisque vous utilisez déjà Html Agility Pack, je vous suggère d’utiliser les méthodes fournies pour trouver les informations souhaitées. Il existe plusieurs façons de naviguer dans le document, mais l’une des plus concises est d’utiliser XPath . Dans ce cas, vous pourriez utiliser quelque chose comme ceci:

HtmlDocument doc = new HtmlDocument();
doc.Load("input.html");
HtmlNode node = doc.DocumentNode
                   .SelectNodes("//table[@cellspacing='3']/tr[2]/td")
                   .Single();
string text = node.InnerText;




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi