0

Web サイトから HTML ファイルを解析していますが、ファイルからすべてのデータを取得するのに問題があります。

<tr>
<td class="color_line1" valign="center" align="left">Cemopel - Cm Petroleo Ltda.</td>
<td class="color_line1" valign="center" align="left">Avenida Rui Barbosa, 879 0</td>
<td class="color_line" valign="left"><a class="linkpadrao" href="javascript:Direciona('GRA%C3%87AS');">Gra###</a></td>
<td class="color_line" valign="center" align="center">SHELL</td>
<td class="color_line" valign="center" align="center">2,899</td>
<td class="color_line" valign="center" align="center"> - </td>
<td class="color_line" valign="center" align="center">-</td>
<td class="color_line" valign="center" align="center">-</td>
<td class="color_line" valign="center" align="center">04/09/2013</td>
</tr>

そして、ファイルの別の部分:

<tr>
<td class="lincol" valign="center" align="left">E.u. Ten#### Neto Combust###is</td>
<td class="lincol" valign="center" align="left">Avenida Marechal Mascarenhas de Morais, 4900 </td>
<td valign="left"><a class="linkpadrao" href="javascript:Direciona('IMBIRIBEIRA');">Imbiribeira</a></td>
<td valign="center" align="center">COSAN COMBUST##EIS</td>
<td valign="center" align="center">2,899</td>
<td valign="center" align="center">2,505</td>
<td valign="center" align="center">CIF</td>
<td valign="center" align="center">-</td>
<td valign="center" align="center">04/09/2013</td>
</tr>
<tr>

親を使用してデータを取得し、「linkpadrao」クラスで作業していました。正常に動作しますが、「linkpadrao」クラスより上のデータを取得できません。

posto.parent.search('~ td').map &:text

何か案は?

4

1 に答える 1

1

css-selector~ tdでは、~は一般的な兄弟セレクターです。残念ながら、兄弟セレクター (一般および隣接) は、ノードの後の兄弟のみを選択します。これが、以前の td 要素を取得できない理由です。Css セレクターには、先行する兄弟セレクターがありません。

すべての td 要素が必要なので、tr 要素の親をもう 1 つ上に移動してから、すべての td 要素を取得できます。

posto.parent.parent.search('td').map &:text
#=> E.u. Ten#### Neto Combust###is
#=> Avenida Marechal Mascarenhas de Morais, 4900 
#=> Imbiribeira
#=> COSAN COMBUST##EIS
#=> 2,899
#=> 2,505
#=> CIF
#=> -
#=> 04/09/2013

postoがリンクノードであると想定していることに注意してください。

または、前に兄弟セレクターがある xpath を使用できます。ただし、この場合はあまり良くないようです。

posto.parent.xpath('./following-sibling::td|preceding-sibling::td').map &:text
于 2013-09-12T13:09:33.510 に答える