Geo*_*kas 8 css ruby mechanize
我试图使用机械化解析网站的内容,我陷入了困境.我要解析的内容位于li标记内,并不总是以相同的顺序排列.
让我们假设我们有以下li标签的顺序并不总是相同的,有些甚至根本不存在.
<div class="details">
<ul>
<li><span>title 1</span> ": here are the details"</li>
<li><span>title 2</span> ": here are the details"</li>
<li><span>title 3</span> ": here are the details"</li>
<li><span>title 4</span> ": here are the details"</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要的只是获取文本li所在的细节.我所做的是以下内容,它给出了第一个细节:spantitle 3li
puts page.at('.details').at('span', :text => "title 3").at("+ *").text
Run Code Online (Sandbox Code Playgroud)
有没有办法用机械化做我想要的东西,还是我还应该用其他方法?
Rod*_*ore 18
page.search(".details").at("span:contains('title 3')").parent.text
Run Code Online (Sandbox Code Playgroud)
说明:在at处可以使用css或xpath选择器.为了使您的方法更具可读性和类似性,此答案使用css选择器,但问题是CSS无法基于文本执行选择.感谢Nokogiri,您可以使用JQuery选择器,因此contains方法是允许的.
选择获取span元素,因此如果要获取li元素parent,可以使用父方法,然后轻松获取文本.
| 归档时间: |
|
| 查看次数: |
15714 次 |
| 最近记录: |