在两个指定标签之间搜索内容



我将Nokogiri安装到一个Rails项目中,它目前可以毫无问题地运行"Nokogiri HTML解析器示例"。

我正在尝试创建一个 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>

您可以使用css方法选择器: doc.css('pre b') 它将获取每个<pre>标签中的每个<b>标签:

doc.css('pre b').each do |b_tag|
  # b_tag will be a String containg like `<b>this text is bold</b>`
end

这可能不是最优雅的解决方案,但它为我提供了诀窍。

在控制器中,我定义了以下内容:

  def index
    page = [THE_URL]
    doc = Nokogiri::HTML(open(page))
    @content = doc.css('b').remove
    @content = doc.css('pre')
    puts @content
  end

然后在视图中;

  <%=@content %>

相关内容

  • 没有找到相关文章

最新更新