Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 Nokogiri html解析问题_Ruby_Nokogiri - Fatal编程技术网

Ruby Nokogiri html解析问题

Ruby Nokogiri html解析问题,ruby,nokogiri,Ruby,Nokogiri,我很难弄明白为什么我不能通过nokogiri正确解析关键词。在下面的示例中,我的a href链接文本功能工作正常,但无法确定如何提取关键字 这是我迄今为止的代码: 这成功地呈现了页面中的所有a href文本,但当我尝试将其用于关键字时,它没有显示任何内容。我尝试过几种不同的方法,但都没有成功。我假设节点后的“.text”标注是错误的,但我不确定 很抱歉,这段代码太粗糙了,我正在尽力学习。你说得对,问题是text文本返回开始标记和结束标记之间的文本。由于meta标记是空的,这将为您提供空字符串

我很难弄明白为什么我不能通过nokogiri正确解析关键词。在下面的示例中,我的a href链接文本功能工作正常,但无法确定如何提取关键字

这是我迄今为止的代码:

这成功地呈现了页面中的所有a href文本,但当我尝试将其用于关键字时,它没有显示任何内容。我尝试过几种不同的方法,但都没有成功。我假设节点后的“.text”标注是错误的,但我不确定


很抱歉,这段代码太粗糙了,我正在尽力学习。

你说得对,问题是
text
<代码>文本返回开始标记和结束标记之间的文本。由于meta标记是空的,这将为您提供空字符串。您需要的是“content”属性的值

doc.xpath("//meta[@name='Keywords']/@content").each do |attr|
  puts attr.value
end
因为您知道只有一个名为“keywords”的元标记,所以实际上不需要循环遍历结果,但可以像下面这样直接获取第一项:

puts doc.xpath("//meta[@name='Keywords']/@content").first.value

但是请注意,如果没有名为“content”的meta标记,这将导致错误,因此第一个选项可能更可取。

谢谢!!我已经寻找了很长一段时间,看看在哪里可以找到这些定义。你能告诉我我应该看什么样的文件吗?当我研究这样的问题时,我几乎总是在irb。这使您可以探索返回的值,找出需要进行的调用或需要查询的属性。请阅读“”。演示问题的最小输入是什么?不要要求我们创造自己的。你必须帮助我们帮助你。通过这样做,您可以帮助那些在将来寻找类似解决方案的人,这就是堆栈溢出出现的原因。
puts doc.xpath("//meta[@name='Keywords']/@content").first.value