Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
机械化Ruby直接在标记内获取文本_Ruby_Mechanize - Fatal编程技术网

机械化Ruby直接在标记内获取文本

机械化Ruby直接在标记内获取文本,ruby,mechanize,Ruby,Mechanize,我有一些html,看起来像这样 我想要什么 我不想要什么 获取文本的代码是 my_row=page.search('tr')。首先 将我的_行放入文本 问题是它会输出我想要的东西,而我不想要的东西 如何仅提取选定标记中的文本,而不提取任何子元素中的文本?您需要使用类似Nokogiri的东西来解析HTML 需要“nokogiri” html=” 我想要什么 我不想要什么 " doc=Nokogiri::HTML(HTML) text=doc.search('tr').xpath('text

我有一些html,看起来像这样


我想要什么
我不想要什么
获取文本的代码是

my_row=page.search('tr')。首先
将我的_行放入文本
问题是它会输出我想要的东西,而我不想要的东西


如何仅提取选定标记中的文本,而不提取任何子元素中的文本?

您需要使用类似Nokogiri的东西来解析HTML

需要“nokogiri”
html=”
我想要什么
我不想要什么
"
doc=Nokogiri::HTML(HTML)
text=doc.search('tr').xpath('text()'))
放text.text#我想要什么

我认为您可以访问
tr
标记,然后访问
b
子标记并将其删除,这样您就可以获得“主”tr内容:

require 'nokogiri'

data = <<-HTML
<tr>
  What I want
  <b>
    What I don't want
  </b>
<tr>
HTML


doc = Nokogiri::HTML.parse(data)
tr = doc.css('tr')
tr.css('b').remove
p tr.text
# "\n  What I want\n  \n\n"
需要“nokogiri”

data=我使用child/children进行此操作:

doc.at('tr').child.text

我知道使用Nokogiri,您可以
page.search('tr').xpath('text()')
;你可以用Mechanize做类似的事情。
doc.at('tr').child.text