Ruby on rails 通过Nokogiri选择精确数据
我的数据库里有一个大学篮球队的名单。这些名称与我试图解析的网站上的名称完全匹配。这个网站是一张大桌子。我想根据数据库中的团队选择/匹配特定单元格。如果是css或xpath选择方法,我没有偏好。只要行得通。以下是返回的一个小示例(添加了一些换行符以供查看):Ruby on rails 通过Nokogiri选择精确数据,ruby-on-rails,ruby,xpath,nokogiri,Ruby On Rails,Ruby,Xpath,Nokogiri,我的数据库里有一个大学篮球队的名单。这些名称与我试图解析的网站上的名称完全匹配。这个网站是一张大桌子。我想根据数据库中的团队选择/匹配特定单元格。如果是css或xpath选择方法,我没有偏好。只要行得通。以下是返回的一个小示例(添加了一些换行符以供查看): doc=Nokogiri::HTML(打开http://kenpom.com/")) =>#这是一种可能的XPath: //*[@id="ratings-table"]/tbody/tr[contains(td[2],"Kentucky")]
doc=Nokogiri::HTML(打开http://kenpom.com/"))
=>#这是一种可能的XPath:
//*[@id="ratings-table"]/tbody/tr[contains(td[2],"Kentucky")]/td[1]
XPath查找具有td[2]
子元素的tr
元素包含单词“Kentucky”
,然后返回相应的td[1]
子元素
或者,您可以检查td[2]
的a
子元素的精确值以查找目标行,然后返回目标列(td
)元素:
//*[@id="ratings-table"]/tbody/tr[td[2]/a = "Kentucky"]/td[1]
非常感谢。有没有一种方法比包含的内容更精确?e、 如果我搜索包含“Michigan”的内容,我想确保它是Michigan而不是Michigan State…谢谢!另外,你了解ruby/ror吗?我尝试了data.xpath(“/*[@id=“ratings table”]/tbody/tr[td[2]/a=“Kentucky”]/td[1]”并得到了语法错误:“``SyntaxError:(irb):54:语法错误,意外的tIDENTIFIER,预期的’”
^(irb):54:语法错误,意外的tSTRING\u BEG,预期的关键字是\/code>(irb):54:语法错误,意外的t常量,预期输入结束
我不懂ruby,但这是编程语言中的一个常见问题:字符串分隔符冲突。在XPath表达式中用单引号替换双引号:doc.XPath(“//*[@id='ratings-table']/tbody/tr[td[2]/a='Kentucky']/td[1]”
欢迎使用堆栈溢出。在请求调试代码的帮助时,我们希望得到示例输入,在您的情况下,这将是处理代码所需的最小HTML。我们希望用最少的代码来演示您的问题。您正在显示inspect
输出,这会降低我们帮助您的能力。请回顾与Nokogiri相关的其他问题,了解如何提问以及您应该提供什么。