*编辑:根据我下面的评论,我想一个更好的问题是,'让 mechanize 遍历每个 url 并更新其名称列的正确方法是什么?(每个名称对于 url 来说都是唯一的)' 下面是我练习的基础。*
我有一个 postgres 表,类似于... | 名称(字符串)| 网址(文本)|
url 列已经填充了各种 url,看起来像这样: http ://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Register/Default.aspx
我正在尝试运行一个 mechanize rake 任务,该任务将通过每个 url 运行并根据它在 css 标记处找到的文本更新名称。
namespace :db do
desc "Fetch css from db urls"
task :fetch_css => :environment do
require 'rubygems'
require 'mechanize'
require 'open-uri'
agent = Mechanize.new
url = Mytable.pluck(:url)
agent.get(url)
agent.page.search('#dnn_ctr444_ContentPane').each do |item|
name = item.css('.EventNextPrev:nth-child(1) a').text
Mytable.update(:name => name)
end
end
end
当我运行 rake 任务时,它返回:
rake aborted!
bad URI(is not URI?): %255B%2522http://www.a4apps.com/Websites/SampleCalendar/tabid/89/Default.aspx%2522,%2520%2522http://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Privacy/Default.aspx%2522,%2520%2522http://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Terms/Default.aspx%2522,%2520%2522http://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Register/Default.aspx%2522%255D
谢谢你的帮助。如果有什么方法可以让问题更容易回答,请告诉我。麦克风