gpt4 book ai didi

html - 在 Nokogiri 中选择变体

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:45 24 4
gpt4 key购买 nike

我正在抓取这两个网站:

  1. > https://www.library.uq.edu.au/uqlsm/availablepcsembed.php?branch=Law
  2. > https://www.library.uq.edu.au/uqlsm/availablepcsembed.php?branch=BSL .

不幸的是,它们有变体。一个在 href 标签内有关卡名称(例如 Level 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

最佳答案

如果你想做的是抓取最里面的 div 中的文本,你应该能够通过在解析的 td< 上调用 #text 一直深入下去 元素。无需考虑和走动可能存在于内部的额外标签,例如链接标签。鉴于您编写的代码:

details_page.css("table.chart tr").collect do |level|
level = level.text
end

对于每个元素,这会将级别标签或百分比值(内部文本)作为字符串提取并将该值分配给级别变量。

编辑:另外,如果您只关心获取级别标签,您可以预先按类别过滤元素:

details_page.css("table.chart tr td.left").collect do |level|
level = level.text
end

关于html - 在 Nokogiri 中选择变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com