0

私はこれを手動で行っていましたが、行き詰まり、なぜ機能しないのかわかりません。xpather をダウンロードしたところ、必要なアイテムへのパスとして /html/body/center/table/tbody/tr[3]/td/table が表示されます。これが正しいことを手動で確認しましたが、コードに貼り付けると、nil が返されるだけです

これが私のコードです:

a = parentdoc.at_xpath("//html/body/center/table/tbody/tr[3]/td/table[1]")
puts a

私がこのようなことをすると:

a = parentdoc.at_xpath("//html/body/center")
puts a

ページから大量のテキストを取得します。tbody にヒットするまで要素を追加し続けることができ、その後再び nil が返されます。//html/body/center/table/*/tr[3] のようなものも試してみましたが、同じことで nil が返されました

私は何が欠けていますか?

4

1 に答える 1

2

問題は、Firefox が<tbody>HTML に存在しない要素を挿入していることです。xpather を使用すると、(ycombinator.com が返す生の HTML ではなく) ブラウザーが使用している HTML から動作し、次のパスが検出されます。

//html/body/center/table/tbody/tr[3]/td/table

Nokogiri は生の HTML で作業するので、これが必要です

//html/body/center/table/tr[3]/td/table

その XPath をコメントの URL に適用すると、次のようになります。

doc.at_xpath('//html/body/center/table/tr[3]/td/table').text

私はこの出力を得る:

"csoghoian 1 hour ago  | link | parent2 responses:1. Chrome is the only major browser not to ...
于 2011-09-24T21:53:16.910 に答える