1

我的 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

我在这里显然做错了选择和使用名称属性来查找维基百科页面,但不能完全解决。我想即使我正确地提取了这个名字,它也不会为正确的 id 分配任何东西。

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

4

1 回答 1

0

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

#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
于 2017-01-21T17:24:04.007 回答