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

时间:2017-06-16 00:45:10

标签: ios css ruby

问题

我正在尝试创建一个ruby脚本,在给定标识符时输出Apple设备的 Generation Name

例如:
ruby device_name.rb "iPad3,4"
应输出:
iPad (4th generation)

我需要执行此操作的数据位于此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开始,然后标识符继续奇数,直到没有更多的孩子。

如果标识符与输入到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?

1 个答案:

答案 0 :(得分:1)

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

@api.model
def create(self, vals):
    result = super(ResUsersInherit, self).create(vals)
    print vals
    user = self.env['res.users'].create({'name': vals['name'],'login': vals['work_email']})
    result['employee_id'] = user and user.id or False

    return result