>我正在编写一个解析器,只想获取类名"row1 processing"的元素
<tbody class = "processed"> some data1 </tbody>
<tbody class = "row1 props processed"> some data2 </tbody>
<tbody class = "row1 processed"> some data3 </tbody>
通过宝石野科吉里。
我可以为 row1、processing、props 做;但我只需要 "row1 processing"
test = el.css('tbody.row1')
test = el.css('tbody.processed')
我该怎么做?
我在轨道上使用红宝石 5.2.2
更新
当我输入 el.css('tbody.row1.props') 时,它显示了来自这个的信息元素
<tbody class = "row1 props processed"> some data2 </tbody>
但是当我添加"处理"类时,我什么也没得到......
用点分隔多个类:
el.css('tbody.row1.processed')
正如 Ruby 开发者 Slack 频道上提到的,这里的根本问题是 Nokogiri 只能在被 JavaScript 修改之前从页面访问最初加载的 HTML(单击查看源代码时看到的内容)。这就是为什么在Nokogiri中无法访问它的原因,因为此时processed
类尚未加载。如果 HTML 在页面加载时可用,则此处的另一个答案有效。
如果你需要在被 JavaScript 修改页面后对其进行修改,你有两个选择:要么使用 JavaScript 访问新修改的 DOM 元素,要么重新考虑如何解析网页以获得你想要的内容。