新手问题 nokogir 规则匹配的一个小问题

luffycn · 2014年12月10日 · 最后由 luffycn 回复于 2014年12月10日 · 1983 次阅读

<div class='top'>
  <h2>xxx</h2>
  <p>nnn</p>
  <p>lll</p>
  <div>77</div>
</div>

如果想获取 div 下面所有 p 的内容,怎么写了?不要 h2, 也不要 div , 就只要包含有 p 的标签

doc.css(".top p")

@cqpx 如果只想取得第一个 p 的内容了?

doc.css(".top p") 应该是个 NodeSet 对象,表现跟数组差不多,你用 doc.css(".top p")[0] 试试

研究了好长时间才搞定,发现只需要 doc.css(".top").children 就可以了,遇到这种问题 用 p 打印出来看看结构就知道了

建议用 mechanize, 基于 Nokogiri 的,非常好用

doc.xpath("./div//p").map(&:content)

@cifery 我就一直是在用 mechanize

需要 登录 后方可回复, 如果你还没有账号请 注册新账号