【问题标题】:Using Wikipedia-Client Gem to Update Rails Database使用 Wikipedia-Client Gem 更新 Rails 数据库
【发布时间】:2017-01-21 13:32:45
【问题描述】:

我的 ruby​​ 和 Rails 有点生锈了。我的数据库中有一个名为institutes 的表,其中填充了一些列。我想使用 Wikipedia-Client gem 来填充其他一些。我想使用 name 属性在 Wikipedia 上查找页面,然后使用 page.summary 作为我的表中的 description 属性,并使用 page.image_urls.first 作为 picture 属性。目前,我正在努力研究如何解决这个问题。

我当前的代码是:

require 'Wikipedia'
Institute.each do |institute|
   school = institute.pluck(:name)
   page = Wikipedia.find(school)
   description = page.summary
   picture = page.image_urls.first
   Institute.update!(description: description, picture: picture)
end

我显然在选择和使用 name 属性来查找 Wikipedia 页面时做错了,但无法完全解决。我认为即使我正确地提取名称,它也不会为正确的 id 分配任何东西。

如果还有一种方法可以在 Wikipedia 搜索中删除名称开头的“The”(如果它存在于 :name 中),这也会很有帮助,因为似乎有些机构在 Wikipedia 上删除了这个。

【问题讨论】:

    标签: ruby-on-rails ruby wikipedia pluck


    【解决方案1】:

    你可以尝试使用这样的东西:

    #use https://github.com/kenpratt/wikipedia-client
    require 'wikipedia'
    
    #select all Institutes through AR model
    Institute.all.each do |institute|
      #'institute' is an object, so we can get its name by dot operator
      school = institute.name
    
      #try to find school as is
      #then try to find without 'The'
      #and go ahead only if page exists
      page = Wikipedia.find(school)
      page = Wikipedia.find(school[3..-1].strip) if page.content.nil? and school[0..2].downcase == 'the'
      next if page.content.nil?
    
      description = page.summary
      picture = page.image_urls.first
      #update Institute object
      institute.update!(description: description, picture: picture)
    end
    

    【讨论】:

    • 这就像一个魅力。我离得不远,但非常感谢代码中的 cmets。总有一天我会去的!
    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多