on_pages_like
URLを特定の一致に保存したい。アネモネはその役割を果たしており、URL を保存するレコードが作成されていますが、次のようになります。
find_or_create_by_url
の代わりに のようなものを使用したいcreate!
ので、毎回レコードを複製しません。URLを保存したい。現在、URL は次のように DB に保存されています。
--- !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 を使用してそのテーブルを変更する必要があるためです。私はこれが初めてで、2 つ目の DB を追加するという考えに少し圧倒されました。アネモネのサイトで提案されました。
ここ数日、基本的なコードを微調整してみましたが、まだ解決策が見つかりません。
これは私のレーキタスクです:
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
私のビューは、データを Web ページに出力する以外に何もしません。
<% @calendar.each do |part| %>
<tr valign="top">...
<td><%= part.url %> </td>...
</tr>
<% end %>
私のコントローラー:
class CalendarController < ApplicationController
def cainventory
@calendar = Calendarparts.all
end
end