-2

この構造のコードで言及されているtrをhtml応答のnokogiriで取得するにはどうすればよいですか?

<html>
  <body>
    <table>

    </table>

  <table>
    <tbody>
      <tr>
        <td>
          <table>
            <tr></tr>
              <tr><td> wanna this text as output.</td></tr>
          </table>
         </td>
      </tr>
    </tbody>
   </table>
  </body>
</html>
4

2 に答える 2

0

そのテキストにアクセスするには、次のような複数の方法があります。

html = Nokogiri::HTML my_html_string
row_text = html.at('//table[2]/tbody/tr/td/table/tr[2]').text
于 2012-08-01T13:29:43.847 に答える
0

CSSアクセサーはより寛容なので、私はCSSアクセサーを使用することを好みます。HTMLサンプルを使用して、次を使用します。

irb(main):026:0> doc.search('table table tr').last.text
" wanna this text as output."

または、XPATHアクセサーは次のとおりです。

irb(main):042:0> doc.search('//table//table//tr').last.text
" wanna this text as output."

複数の行を含むネストされたテーブルを探しています。最後の行が必要です。

ブラウザ内のHTMLを見て、<table><tbody>組み合わせを確認するときは常に注意してください。ブラウザは多くのコード修正を行います。そのため、HTMLを直接取得してパーサーに渡すと、タグが存在しない可能性があります。また、ブラウザの出力に表示される存在しないタグは、追加するときにCSSまたはXPathアクセスを破棄します。特に、これ<tbody>は実際によくある問題です。

于 2012-08-06T19:38:14.330 に答える