【问题标题】:Ruby - Reading csv file and executing value in loop is skipping over lines in the csv fileRuby - 读取 csv 文件并在循环中执行值正在跳过 csv 文件中的行
【发布时间】:2011-01-20 16:42:34
【问题描述】:

我确信这是一个完全无知的问题,但它就是这样。以下代码的目标是从标准 csv 文件中读取 id 列表,使用该值附加到 URL,调用 URL 并通过 xpath 提取特定属性。我遇到的问题是循环似乎跳过了一些行。

例如,这里是一个包含 10 个值的示例:

777961
777972
781033
781044
781055
847066
744187
893908
369009
369010

代码只读取每隔一行。实际文件大约有 6000 行,不是很大,但我在第二个文件中只返回了大约 2500 个值。

f = File.open('test.csv', 'r+')

url_f = File.open("url.csv", "w")

for line in f
  f.each_line do |item|
    item = f.gets
    url = "http://test.com/testid=" + item
    client = HTTPClient.new
    resp = client.get_content(url)

    doc = Nokogiri::HTML(resp)
      doc.xpath("//link[@rel='canonical']/@href").each do |attr|
      url_f.puts attr.value
      puts attr.value
      end
    puts item
  end
end

【问题讨论】:

    标签: ruby csv for-loop


    【解决方案1】:

    没关系,我想通了。

    我有item = f.gets 行,它会在每次循环运行时调用下一行,从而跳过每隔一行。我知道这是一个菜鸟问题。 :P

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多