選擇的變化,我刮這兩個網站:在引入nokogiri
- https://www.library.uq.edu.au/uqlsm/availablepcsembed.php?branch=Law
- https://www.library.uq.edu.au/uqlsm/availablepcsembed.php?branch=BSL。
不幸的是,它們有變化。其中一個在href
標記內具有級別名稱(例如級別2),而另一個只是純文本。我如何選擇一個或另一個取決於哪一個?
我想這無濟於事:
level.css(/"a[href]"|".left"/).text
這裏被縮短2 HTML部分的版本:
<table class="chart">
<tr valign="middle">
<td class="left">Level 2</td> <!-- the problem -->
<td class="middle"><div style="width:86%;"><strong>86%</strong></div></td>
</tr>
</table>
<table class="chart">
<tr valign="middle">
<td class="left"><a href="availablepcsembed.php?branch=BSL&room=Lvl1">Level 1</a></td>
<td class="middle"><div style="width:32%;"><strong>32%</strong></div></td>
</tr>
</table>
我的代碼(來自於整個方法的代碼部分編輯)
def self.scrape_details_page(library_url)
details_page = Nokogiri::HTML(open(library_url))
details_page.css("table.chart tr").collect do |level|
right = level.css(".right").text.split
{level: level.css("a[href]").text, available: right[0], out_of_available: right[3]}
end
end
我修復了我的原始帖子以反映完整的方法,因此更易於理解。 ''\ r \ n「+」Level 1 \ r \ n「+」42%\ r \ n「+」13使用'.text'可以正常工作,但是很難在看到它時返回: 31個電腦的\ r \ n「+」「'。我的答案在下面使用'.css(「。left」).text',並且似乎正好選擇了我需要的東西。謝謝。 –