gpt4 book ai didi

ios - 使用 ruby​​ 通过 Nokogiri 的 css 方法抓取 Apple 设备标识符和名称

转载 作者:行者123 更新时间:2023-11-28 15:31:49 25 4
gpt4 key购买 nike

问题

我正在尝试创建一个 ruby​​ 脚本,该脚本在给定 标识符 时输出 Apple 设备的生成名称

例如:
ruby device_name.rb "iPad3,4"
应该输出:
iPad(第 4 代)

我需要执行此操作的数据位于此 wiki 页面上: https://www.theiphonewiki.com/wiki/Models

不幸的是,事实证明这些表格很难抓取。

在检查 chrome 中的元素后,我在第一个表格上取得了一点成功,因此我可以看到 css 结构。

例如,这会得到 Apple TV 表中的标识符:

doc.css("div#content.mw-body div#bodyContent.mw-body-content div#mw-content-text.mw-content-ltr table.wikitable")[0].children[Y].children[11].text

Y 从 3 开始,然后标识符继续奇数,直到没有更多的 child 。

如果标识符与输入到 ARGV[0] 的标识符匹配,那么我可以通过以下方式询问生成名称:

doc.css("div#content.mw-body div#bodyContent.mw-body-content div#mw-content-text.mw-content-ltr table.wikitable")[0].children[Y].children[1].text

到目前为止还不错吧?

但是下一张对应于 Apple Watch 的表格以及之后的所有其他表格让我感到困惑。这将返回整个下一个表。

doc.css("div#content.mw-body div#bodyContent.mw-body-content div#mw-content-text.mw-content-ltr table.wikitable")[1]

但是,相同的查找并不能简单地通过更改为这样的内容来工作:

doc.css("div#content.mw-body div#bodyContent.mw-body-content div#mw-content-text.mw-content-ltr table.wikitable")[0].children[3].children[11].text

显然应该有一个不同的 css 路径,因为有更多的列,但我无法获得相同的一致性或在其他表中找到固定模式。

问题

  1. 如何以编程方式获取所有这些标识符和名称?
  2. 是否有更好的方法来查找这些标识符?也许通过 API?

最佳答案

有点倒退,不一定漂亮,但是,

url = "http://web.archive.org/web/20170224033625/https://www.theiphonewiki.com/wiki/Models" # couldn't access the site itself
req = HTTParty.get(url)
doc = Nokogiri::HTML(req.response.body)
td = doc.css('td').detect { |td| td.text.index(input) }
model = td.parent.css('td')[0].text.strip

关于ios - 使用 ruby​​ 通过 Nokogiri 的 css 方法抓取 Apple 设备标识符和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579095/

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