2

我想将 URL 保存on_pages_like为某个匹配项。Anemone 正在做它的事情,并且正在创建存储 URL 的记录,但是:

  1. 我想使用类似的东西find_or_create_by_url而不是create!,所以我不是每次都复制记录。
  2. 我想保存网址。目前 URL 正在被保存到数据库中,例如:

    --- !ruby/object:URI::HTTP 方案:http 用户:密码:主机:www.a4apps.com 端口:80 路径:/Websites/SampleCalendar/tabid/89/Default.aspx 查询:不透明:注册表:片段: 解析器:

我想要它像:

http://www.a4apps.com//Websites/SampleCalendar/tabid/89/Default.aspx

我保存到 Postgres 表的原因是我想要另一个任务稍后使用每条记录的 URL 修改该表,而且,我对此有点陌生,并且对添加第二个数据库的想法有点不知所措建议在海葵网站上。

在过去的几天里,我尝试调整基本代码,但还没有找到解决方案。

这是我的耙子任务:

namespace :db do
  desc "Fetch a4apps urls"
  task :fetch_a4apps => :environment do
    require 'anemone'
    Anemone.crawl("http://www.a4apps.com/") do |anemone|
      anemone.on_pages_like(/\/SampleCalendar\/[^?]*$/) do |page|
        Calendarparts.create!(:url => page.url)
      end
    end
  end
end

我的观点只是将数据输出到网页上:

<% @calendar.each do |part| %>
    <tr valign="top">...
             <td><%= part.url %>&nbsp;</td>...
    </tr>
<% end %>

我的控制器:

class CalendarController < ApplicationController
  def cainventory
    @calendar = Calendarparts.all
  end
end
4

1 回答 1

0

好的,所以我想我想通了。不知道它是否是理想/正确的方式,但我将路径部分从 url 中拉出并将原始域附加到它的开头。

namespace :db do
  desc "Fetch a4apps urls"
  task :fetch_a4apps => :environment do
    require 'anemone'
    website = 'http://www.a4apps.com'
    Anemone.crawl(website) do |anemone|
      anemone.on_pages_like(/\/SampleCalendar\/[^?]*$/) do |page|
        Calendarparts.find_or_create_by_url(:url => website + page.url.path)
      end
    end
  end
end
于 2012-11-02T17:49:41.687 回答