代码之家  ›  专栏  ›  技术社区  ›  Wesly

如何分离一组我正在抓取的流派并更新为嵌套属性?

  •  -2
  • Wesly  · 技术社区  · 10 年前

    我正在抓取一个网站,并收集每本书的流派。例如,我把“动作、戏剧、浪漫”变成一个字符串a,现在我想把每一种类型分开,把它添加到一个集合中,这样这本书就可以在动作列表或浪漫列表中等等。

    我正在用下面的代码收集流派,它将输出“动作、戏剧、浪漫”。我还有一个流派列表,我想用我正在收集的流派填充。下面的代码可以工作,但它被添加为 ["action", "Romance"] 在一起有没有办法将其分开,并分别添加每种类型?

    genre_scrape = doc.css('div#content .borderClass .js-scrollfix-bottom div:contains("Genres")').text.split(' ')[1..-1]
    
    genre = Genre.where(title: genre_scrape).first_or_create
    book.update(genres: [genre] )
    

    书籍型号

    class Book < ActiveRecord::Base
     has_and_belongs_to_many :genres
    end
    

    流派模型

    class Genre < ActiveRecord::Base
     has_and_belongs_to_many :books
    end
    
    2 回复  |  直到 10 年前
        1
  •  0
  •   xyious    10 年前

    你可以检查你是否有一个以上的流派 genre 如果是这样的话,运行一个循环,将每种类型添加到书中。

        2
  •  0
  •   Wesly    10 年前

    我用下面的代码解决了这个问题。

    genre_scrape = doc.css('div:contains("Genres")').text.split(' ')[1..-1]
    genre_text = genre_scrape.blank? ? "" : genre_scrape
    genre = []    
    genre_text.each do |g|
     genres = g.gsub(/\,/,"")
      genre << Genre.where(title: genres).first_or_create do |genre|
       genre
      end
    end
    anime.update(genres: genre)
    
    推荐文章