我将Nokogiri安装到Rails项目中,它当前可以运行“Nokogiri HTML Parser Example”而没有任何问题。
我正在尝试创建一个Rails项目,该项目将解析IMDB中的电影脚本,进行字数统计,然后显示该部分中出现最多的单词。我已经确定脚本保存在“表”中:
<table width=100% border=0 cellpadding=5 class=scrtext><tr><td class=scrtext><pre><html><head></head><body>
<b>PERSON1</b>
They say some dialogue
<b>PERSON2</b>
They say some more
</pre></table>
我也希望排除<b>/<b>
括号内的文字。
我一直在设置控制器中的上述示例,并且已经接收到URL:
#Save as a temp. file
tmp_file = open('http://www.imsdb.com/scripts/Authors-Anonymous.html')
#Parse the temp. file
doc = Nokogiri::HTML(tmp_file)
我很难理解如何设置CSS约束以获取此表。我知道它位于那些<pre>/<pre>
标签之间,我已经遵循了一些教程,但我仍然不明白如何设置这些约束。
我觉得这之后的代码应该是这样的,但我不太确定:
doc.search("//pre")
如何设置Nokogiri的CSS约束以在<pre></pre>
这两个标记之间提取内容,然后过滤掉输出中会出现的<b></b>
之类的无关标签?
答案 0 :(得分:1)
您可以使用css
方法选择器:doc.css('pre b')
,它会获取每个<b>
标记内的每个<pre>
标记:
doc.css('pre b').each do |b_tag|
# b_tag will be a String containg like `<b>this text is bold</b>`
end
答案 1 :(得分:0)
它可能不是最优雅的解决方案,但它为我做了诀窍。
在控制器中,我定义了以下内容:`
def index
page = [THE_URL]
doc = Nokogiri::HTML(open(page))
@content = doc.css('b').remove
@content = doc.css('pre')
puts @content
end
然后在视图中;
<%=@content %>