我遇到的问题与我认为与Tempfiles有关的简单程序有关。我正在使用' open-uri'和' nokogiri'我正在尝试对文档进行正则表达式搜索以及使用nokogiri进行xpath搜索。但是,如果没有对文档提出两个单独的请求,从而创建两个单独的Tempfiles,我似乎无法做到这一点。这有效,但是提出了两个请求:
require 'open-uri'
require 'nokogiri'
source_url = "http://foo.com/"
#grab html document and assign it a variable
doc = open(source_url)
#grab html document, convert to Nokogiri object and assign to variable.
noko_doc = Nokogiri::HTML(open(source_url))
#create array of stuff.
foo = noko_doc.xpath("//some element").collect { |e| e }
#create another array of stuff
bar = []
doc.each do |f|
f.each do |line|
abstract_matches = line.scan(/some regex string/)
unless abstract_matches.empty?
abstract_matches.collect! do |item|
if item.to_s.match(/yet another regex string/)
item
end
end.compact!
unless abstract_matches.empty?
abstract_matches.each { |match| bar << "#{ match } / " }
end
end
end
end
#all for this
puts foo + bar
如果我能通过&#39; doc&#39;我更愿意变量到Nokogiri :: HTML,以及迭代它。帮助
答案 0 :(得分:2)
迭代Tempfile并不常见。更常见的是这样访问:
html = open(source_url).read
noko_doc = Nokogiri::HTML(html)
html.split("\n").each do |line|
# do stuff
end
答案 1 :(得分:1)
您可以从字符串中解析HTML,请参阅the tutorial。
难道你不能把doc
放到一个字符串中并从中解析Nokogiri吗?