我正在抓取一个网站,我正在收集每本书的类型。例如,我将"动作,戏剧,浪漫"放入一个字符串中,现在我想将每种类型分开以将其添加到集合中,以便该书可以在动作列表或浪漫列表中等等。
我正在使用下面的代码收集流派,它将输出"动作、戏剧、浪漫"。我还有一个流派列表,我想用我正在抓取的流派填充这些流派。下面的代码有效,但它被添加为["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
您可以检查genre
中是否有多个流派,如果是这样,请运行一个循环,将每种流派添加到书中。
我用下面的代码想通了。
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)