0
votes

La table analysante ne reçoit pas tous les éléments TD

Je parse une table HTML à l'aide de C # code> et htmlagilitypack code> et tous les éléments td code> sont renvoyés pour chaque ligne. Il obtient les premier et 3ème et 4ème, mais manque le 2nd un.

J'ai bouclé par le code, mais je ne peux pas comprendre où je vais mal. P>

html: p>

//set the url we are interested in
string urlstring = 
"http://www.jerseyairport.com/flight/Pages/arrivals.aspx";
//use HTML Agilitypack to do the rest
HtmlWeb web = new HtmlWeb();
HtmlDocument document = web.Load(urlstring);      

foreach (HtmlNode flightdiv in 
document.DocumentNode.SelectNodes("//table[@id='airport" + "arrivals" 
+ "']/tbody//tr"))

{
 foreach (HtmlNode col in flightdiv.SelectNodes("td"))

            {
                System.Diagnostics.Debug.WriteLine(col.InnerText);

            }
}


3 commentaires

Le site Web n'a pas de colonne pour ezy891 . Où avez-vous eu cette information?


Votre URL est fausse, utilisez https://www.jerseyairport.com/flight/pages/arrivales.aspx . Si vous utilisez celui que vous avez ici, il vous redirigera vers une autre page avec moins de colonnes.


Toutes mes excuses, je dois manquer quelque chose. J'utilise le site JerseyArport.com/flight/PAGES/arrivales.aspx . Il a 4 colonnes Sched./flight No./origin/Status. Il renvoie Sched./Origin/Status. I.e. Cela manque le deuxième numéro de vol


3 Réponses :


0
votes

Je viens de vérifier le site Web, il n'y a pas de deuxième colonne dans cette table, votre code fonctionne correctement

Votre URL mise à jour est toujours renvoyée à https://www.jerseyAirport.com/pages/ Default.aspx Qui n'a pas le numéro de vol


1 commentaires

Désolé, mais il a 4 colonnes. Pourquoi ne puis-je pas obtenir la deuxième colonne?



0
votes

Y a-t-il une raison particulière d'utiliser HTMLagILityPack?

Je vous ai laissé un code de travail avec la bibliothèque de sélénium. J'ai utilisé cette 2 bibliothèques "openqa.selenium.chrome" et "openqa.selenium", assurez-vous simplement que la version de votre chrome est compatible une. xxx

sortie: xxx


2 commentaires

Y a-t-il des avantages dans l'utilisation de sélénium sur HTMLagilityPack? En outre, votre code ne fournit toujours que 3 colonnes. Il manque le numéro de vol.


Désolé, vous avez raison, j'ai copié la première URL au lieu de la seconde. Changer de URL pour " JerseyAirport.com/flight/PAGES/arrivales.aspx "Et vous obtiendrez également le numéro de vol n ° Sélénium peut être plus lent si vous devez collecter une énorme quantité d'informations (environ 200 éléments en boucle sur les propriétaires comme des webelements un par un). Cependant, à mon avis, il est plus sympathique que HTMLagilityPack et ce problème peut être résolu d'abord de fonctionner avec les attributs en tant que chaîne, puis à la recherche de l'iwebelement correct.



0
votes

Merci pour toutes les réponses fournies. La réponse était assez simple. J'utilisais http://www.jerseyairport.com/flight/pages/arrivales.aspx dans l'adresse Web plutôt que https://www.jerseyAltPort.com/ Vol / Pages / Arrivales.aspx . Dès que j'ai corrigé que cela fonctionnait bien. Merci encore


0 commentaires