2017-03-15 1 views
-1

Je ne peux pas pour la vie de moi voir pourquoi je reçois 8 de la valeur particulière (td [0]) chaque fois qu'il boucle. J'ai vérifié contre ce que j'ai vu en ligne, mais évidemment je me trompe.8 copies de l'élément td pendant la boucle en utilisant Nokogiri

Supposons que 'table' est liée à un chemin Nokogiri html. J'essaie d'obtenir le contenu du premier td (position 0, donc td [0]) dans un tr. Je veux juste les données à la position [0] de chaque TR une fois. Au lieu de cela, je reçois 8 copies de td [0] pour chaque tr. Il me manque quelque chose d'évident je pense, mais quoi?

+1

S'il vous plaît lire "[demander]", y compris les pages liées, et "[mcve]". Lorsque vous posez des questions sur ce type de question, nous avons besoin des données d'entrée minimales (HTML) nécessaires pour démontrer le problème, ainsi que la sortie attendue. Sans cela, nous devons essayer de comprendre à quoi l'entrée doit ressembler, ce qui gaspille notre temps et le vôtre, et si l'entrée s'avère être fausse et nous ne pouvons pas vérifier la sortie contre la vôtre, alors la réponse est fausse. Lisez également l'aide pour le formatage de votre texte. Un texte correctement formaté nous aide beaucoup à comprendre ce que vous dites. –

Répondre

-1
result = [] 
table.css('tr').each do |row| 
    result << row.css('td')[0].text if row.css('td')[0] 
end 

Le problème était très simple, certaines lignes peuvent ne pas avoir td du tout. C'est pourquoi vous voulez vérifier s'il y a un td avant d'appeler #text.

Si vous préférez utiliser #map:

result = table.css('tr').map do |row| # map returns array of results 
    row.css('td')[0].text if row.css('td')[0] 
end.compact # compact deletes all the nil elements from array 
+0

Hey Diodon. Merci pour la réponse! J'ai essayé cela, mais j'obtiens un texte de méthode non défini pour nil: NilClass. Tu as raison. Je devrais être capable de prendre juste les lignes mappées, et assigner une position, mais pas de dés. –

+0

J'ai ajouté modifier. Pourriez-vous jeter un coup d'oeil? – DiodonHystrix

+0

Salut. Je vais vérifier, mais j'ai vérifié les lignes et ils ont tous tds. Je vais vous mettre à jour. –