如何在通过casperjs解析后在DB(SQLite3或sth)中插入数据?

时间:2015-09-02 14:30:41

标签: ruby-on-rails ruby sqlite phantomjs casperjs

我是ruby on rails和casperjs的新手!

我编写的代码可以从一些网页中解析很多单词(innerHTML)。

我知道如何运行此代码,我可以检查bash终端中的数据

但我不知道如何直接在我的数据库中插入这些数据(现在我使用的是SQLite3)

这是我的js代码......(文件名:application.js)

var words = [];
var casper = require('casper').create();

    function getWords() {
        var words = document.querySelectorAll('td.subject a');
        return Array.prototype.map.call(words, function(e) {
            return e.innerHTML;
        });
    }


        casper.start('http://www.todayhumor.co.kr/board/list.php?table=bestofbest', function() {
            // search for 'casperjs' from google form
            words = this.evaluate(getWords);
        });

        for (var i=2; i <=5; i++) {
        casper.thenOpen('http://www.todayhumor.co.kr/board/list.php?table=bestofbest&page='+i, function() {
            // search for 'casperjs' from google form

            words = words.concat(this.evaluate(getWords));
        });
        }

    casper.run(function() {
        // echo results in some pretty fashion
        this.echo(words.length + ' links found:').exit();
        this.echo(words.join('\n')).exit();
});

我通过这样的终端运行这段代码!

username@wow:~/workspace/app/assets/javascripts $ casperjs application.js

,结果是(例如)

Fontconfig warning: ignoring C.UTF-8: not a valid language tag
150 words found:
word1
word2
word3
word4
word5
word6
word7
word8
word9
...

字数可能超过 7,000,000

所以我想在我的数据库表(seed.rb文件)中插入这些数据

告诉你更多细节,db表由3列组成,并且有很多行( 7,000,000 的解析数据)

这是我的迁移目录中的文件代码和我想插入我在column2中解析的单词(:word)!!

class CreateFans < ActiveRecord::Migration
  def change
    create_table :fans do |t|
       t.string :type
       t.string :word
       t.string :spelling

      t.timestamps null: false
    end
  end
end

这是seeds.rb 的代码(例如)

my_initial_words = [
                    ['fruits', 'apple', 'ap'],
                    ['fruits', 'banana', 'ba'],
                    ['fruits', 'kiwi', 'ki'],
                    ['fruits', 'melon', 'me'],
                    ['foods', 'cake', 'ca'],
                    ['foods', 'pizza', 'pi'],
                    ['foods', 'hamburger', 'ha'],
                    ['foods', 'hotdog', 'ho'],
                    ['foods', 'toast', 'to']                        
                  ]    
my_initial_words.each do |word_data|
  Fan.create(type: word_data[0], word: word_data[1], spelling: word_data[2])
end

作为结论,我想知道如何直接在我的DB种子文件中插入解析数据(通过casperjs)!或者有什么好方法可以保存数据吗?

感谢您阅读我的长篇问题!

0 个答案:

没有答案