*编辑:根据我在下面的评论,我想一个更好的问题是,‘通过每个url并更新其名称列的方法是什么?(每个名称都是url特有的)’下面是我练习的基础。*
我有一张postgres桌子,就像.名称(字符串)\ url (文本)
url列已经填充了各种url,并显示如下所示:http://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Register/Default.aspx
我正在尝试运行一个机械化的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谢谢你的帮助。如果有什么办法让这个问题更容易回答的话,请告诉我。麦克
发布于 2012-11-09 14:01:59
最近在回答自己的问题时,我感到有些孤独,但如果别人发现自己陷入同样的困境,我会发表自己的答案。此外,也许其他人会告诉我,我的解决方案是否有任何致命的缺陷,我还没有看到。这是我的最后一个似乎正在工作的rake,从我的表中获取urls,在它们上运行机械化并用在urls上找到的信息更新表.
namespace :db do
desc "Fetch css from db urls"
task :fetch_css => :environment do
Mytable.all.each do |info| # for each row do...
require 'rubygems'
require 'mechanize'
require 'open-uri'
agent = Mechanize.new
agent.get(info.url) # get the url column data for the current db row...
nombre = agent.page.search('.EventNextPrev:nth-child(1) a').text # plug it into mech.
info.update_attributes(:name => nombre) # and update the db with the css result.
end
end
end谢谢。麦克
https://stackoverflow.com/questions/13254667
复制相似问题