首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails机械化遍历postgres表中的每个url

rails机械化遍历postgres表中的每个url
EN

Stack Overflow用户
提问于 2012-11-06 15:55:06
回答 1查看 148关注 0票数 1

*编辑:根据我在下面的评论,我想一个更好的问题是,‘通过每个url并更新其名称列的方法是什么?(每个名称都是url特有的)’下面是我练习的基础。*

我有一张postgres桌子,就像.名称(字符串)\ url (文本)

url列已经填充了各种url,并显示如下所示:http://www.a4apps.com/Websites/SampleCalendar/tabid/89/ctl/Register/Default.aspx

我正在尝试运行一个机械化的rake任务,它将在每个url中运行,并根据它在css标记中找到的文本更新名称。

代码语言:javascript
复制
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任务时,它会返回:

代码语言:javascript
复制
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

谢谢你的帮助。如果有什么办法让这个问题更容易回答的话,请告诉我。麦克

EN

回答 1

Stack Overflow用户

发布于 2012-11-09 14:01:59

最近在回答自己的问题时,我感到有些孤独,但如果别人发现自己陷入同样的困境,我会发表自己的答案。此外,也许其他人会告诉我,我的解决方案是否有任何致命的缺陷,我还没有看到。这是我的最后一个似乎正在工作的rake,从我的表中获取urls,在它们上运行机械化并用在urls上找到的信息更新表.

代码语言:javascript
复制
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

谢谢。麦克

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13254667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档