【问题标题】:Mysql2 database integration in a rails app(parser), which is based on Mechanize基于 Mechanize 的 Rails 应用程序(解析器)中的 Mysql2 数据库集成
【发布时间】:2013-08-15 08:21:23
【问题描述】:

我制作了一个基于 Mechanize 的解析器(ruby 文件)并将其放入模型中(我通过 rails 生成器创建了具有所有属性的模型,例如名称:字符串、电子邮件:字符串等并进行了迁移) rails app(我做对了吗?)。但我不知道如何让解析器将收集到的信息记录到数据库中。

解析器:

class PrintingHouses < ActiveRecord::Base
require 'mechanize'

agent = Mechanize.new
page = agent.get('http://www.print-index.ru/default.aspx?p=82&gr=198')

loop do
  page.search('.goodname .goodname').each do |n|
    link = Mechanize::Page::Link.new(n, agent, page)
    new = link.click
    name = new.search('#ctl00_ctl00_BaseCentralRegion_CentralRegion_lblGoodName h1')
    address = new.search('.address')
    phone = new.search('.phone')
    email = new.search('.email')
    website = new.search('.www')
    puts name.text.center(100)
    print "Address: "
    puts address.text.strip
    print "Phone: "
    puts phone.text.strip
    print "email: "
    puts email.text.strip
    print "Website: "
    puts website.text.strip
  end
 break unless link = page.link_with(:text => " » " )
 page = link.click
 end
end

【问题讨论】:

  • 您要解析到哪个模型?你的 Rails 是什么版本的?
  • 模型是什么意思?我只想将解析后的信息保存到数据库中,但我不知道该怎么做。 Rails 版本是 4.0.0
  • 表示你想把数据保存在哪里,PrintingHouses?
  • 我想通过模型中的调用方法 new 或类似的方法将数据保存到数据库中。对不起,如果我理解错了什么

标签: ruby-on-rails ruby database parsing mysql2


【解决方案1】:

我想我知道你的目标。

require 'mechanize'

agent = Mechanize.new
page = agent.get('http://www.print-index.ru/default.aspx?p=82&gr=198')

loop do
  page.search('.goodname .goodname').each do |n|
    link = Mechanize::Page::Link.new(n, agent, page)
    new = link.click
    name = new.search('#ctl00_ctl00_BaseCentralRegion_CentralRegion_lblGoodName h1')
    address = new.search('.address')
    phone = new.search('.phone')
    email = new.search('.email')
    website = new.search('.www')

    YourModelName.create(name: name.text.center(100), address: address.text.strip,
                         phone: phone.text.strip, email: email.text.strip, 
                         website: website.text.strip)


  end
 break unless link = page.link_with(:text => " » " )
 page = link.click
 end

只需确保您的模型名称和列名称正确且没有验证错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多