1

次のようなものを使用する「RubyまたはNokogiriを使用してページの生のHTMLソースコードを取得する方法」を見てきました。

file = open("index.html")
puts file.read
page = Nokogiri::HTML(file)

しかし、読み取りポイントがファイルの最後に移動しているため、ノコギリはファイルを読み取ることができなくなっているようです。readとのこぎりの呼び出しを入れ替えると:

file = open("index.html")
puts file.read
page = Nokogiri::HTML(file)

ファイルは出力されなくなります。Nokogiriが元々使用していたHTMLを照会できるようにしたいので、生のソースに対して独自の追加の解析を行うことができます。理想的には、

file = open("index.html")
page = Nokogiri::HTML(file)
raw_html = page.html

注:私も試しましpage.to_htmlたが、フォーマットが少し変わっているようです。

4

2 に答える 2

5

通常、Fileインスタンスを渡すので、チャンクで処理できますが、文字列を渡すこともできます。

html = File.read("index.html")
page = Nokogiri::HTML(html)
page_html = page.html
于 2012-06-14T17:08:35.303 に答える
3

参考までに:Nokogiriがドキュメントを解析した後、または変更した後、ドキュメントのHTML(またはそれが作業している場合はXML)を返すようにNokogiriに依頼することもできます。

doc = Nokogiri::HTML('<head><body>foo</body></head>')
puts doc.to_html

これはpryで出力されます:

[4] (pry) main: 0> puts doc.to_html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
<body>foo</body>
</html>

Nokogiriは、HTMLを「より良く」するためにいくつかの修正を行ったことに注意してください。

于 2012-06-14T22:28:49.587 に答える