2017-09-28 8 views
0

J'utilise Nokogiri avec Rails 5. Étant donné une ligne d'un tableau HTML, p.Comment comptabiliser colspan lors de l'analyse d'une ligne de table à l'aide de Nokogiri?

<tr> 
    <td>1</td> 
    <td>2</td> 
    <td>3</td> 
</tr> 

J'utilise actuellement ce code pour extraire les données de cellule de tableau comme un tableau ...

row_values = row.css('td, th').map{|str| str.text } 
              .map{|str| str.gsub(/[[:space:]]+/, ' ').gsub(/\A\p{Space}+|\p{Space}+\z/, '') }.join("\t") 

où "ligne" est ma ligne de table. Ma question est, comment puis-je ajuster le ci-dessus de sorte que si une cellule de table contient un attribut colspan, j'ajouterais des éléments vides supplémentaires dans mon tableau pour chaque rangée supplémentaire occupée par le colspan? Ainsi, par exemple, si ma ligne était

<tr> 
    <td>1</td> 
    <td colspan="2">2</td> 
    <td>3</td> 
</tr> 

Mon tableau serait

["1", "2", "", "3"] 

Avis J'ai un extra « » là-bas parce que la seconde cellule de table a un « colspan » égal à 2. Si c'était "3", j'aurais deux "" supplémentaires dans mon tableau, et ainsi de suite.

Répondre

0

Une façon est d'ajouter les cellules vides:

doc.search('[colspan]').each{|td| td.after '<td></td>' * (td['colspan'].to_i - 1)} 

Maintenant, vous pouvez le faire de la façon dont vous avez fait avant