URI:PARSE から受信した一部のデータを切り詰める必要があります...それは html コードとデータでいっぱいです。最後の結果が必要です。
文字列 (省略) は次のとおりです。ジャンク
必要なデータを変数に分割できるように、文字列内の余分なものを切り捨てる最良の方法は何ですか。
前もってありがとう、Philip pabbott@cpak.com
スパンNokogiri
から値を抽出するために使用することをお勧めします:Result
require 'nokogiri'
response = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="w3.org/1999/xhtml"><head><title>;
</title></head><body>
<form name="form1" method="post" action="tenHSServer.aspx?t=34&f=DeviceValue&d=R10" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkzNDcxNzcwM2RkM4AHUDZdWZytDdspzLq7+FOXRfQ=" />
</div>
<span id="Result">R10:100;</span>
</form></body>
</html>'
result = nil
if doc = Nokogiri::HTML(response) rescue nil
if span = doc.css('#Result')
result = span.text
end
end
puts result
#=> R10:100;
ただし、インストールできない/インストールしたくない場合はNokogiri
、代わりに次の正規表現を使用してください。
result = response.scan(/id=["|']Result["|']>([^<]*)<\//m).flatten.first
puts result
#=> R10:100;
<span id=\"Result\">
sub()への最初の呼び出しで含まれるものまでのすべてを削除します。次に</span>
、sub()への2番目の呼び出しで残っているもの以降のすべてを削除します。
HTMLを変数mystringに格納するとします
result = mystring.sub(/.*<span id=\"Result\">/,'').sub(/<\/span>.*/,'')
スパンである要素に常に依存できるとは限らない場合は、次を使用できます。
result = mystring.sub(/.*id=\"Result\">/,'').sub(/<\/.*/,'')