0
我试图解析我的Facebook消息历史记录,因为我感兴趣的是谁使用哪些词,并且多长时间一次以及类似的东西。获取包含具有某个值的节点的节点的下一个节点
这是一个节点,表示两个人(玛丽和约翰)之间的对话结构:
<div class="thread">
Mary Smith, John Smith
<div class="message">
<div class="message_header">
<span class="user">Mary Smith</span>
<span class="meta">Saturday, October 12, 2013 at 12:53am UTC+02</span>
</div>
</div>
<p>Hello, how are you?</p>
<div class="message">
div class="message_header">
<span class="user">John Smith</span>
<span class="meta">Saturday, October 12, 2013 at 12:55am UTC+02</span>
</div>
</div>
<p>I am fine, thank you for asking.</p>
</div>
我要取它的作者是玛丽(使用XPath)的所有消息。我可以承认,事情是由玛丽写的消息,因为它是在一个p
message
具有message_header
类的子类div
具有span
孩子user
类,其内容包括“玛丽”的类的div
后。
我尝试:
//div[@class="thread"]/p[preceding-sibling::div[@class="message"][div[@class="message_header"][span[@class="user"][contains(., "Mary")]]]]
这可能是也可能不是正确的,但它是不可用的,因为它的速度太慢。 有没有更聪明的方法来写这个查询?
哦,我正在使用Ruby + Nokogiri解析文档,但我不确定这是否相关。
最后一个选项是快它的工作原理。谢谢。 – iCanLearn