搜索两个指定标签之间的内容
Searching for contents between two specified tags
我将 Nokogiri 安装到一个 Rails 项目中,它目前可以 运行 “Nokogiri HTML Parser Example” 没有任何问题。
我正在尝试创建一个 Rails 项目,该项目将解析 IMDB 中的电影剧本,进行字数统计,然后显示该部分中出现次数最多的字词。我已经确定脚本保存在 "table":
<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 约束来获取此 table。我知道它在那些 <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 %>
我将 Nokogiri 安装到一个 Rails 项目中,它目前可以 运行 “Nokogiri HTML Parser Example” 没有任何问题。
我正在尝试创建一个 Rails 项目,该项目将解析 IMDB 中的电影剧本,进行字数统计,然后显示该部分中出现次数最多的字词。我已经确定脚本保存在 "table":
<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 约束来获取此 table。我知道它在那些 <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 %>