Ruby - чтение CSV-файла и выполнение значения в цикле пропускает строки в CSV-файле - PullRequest
1 голос
/ 20 января 2011

Я уверен, что это совершенно неосведомленный вопрос, но здесь он идет. Целью следующего кода является чтение списка идентификаторов из стандартного файла CSV, использование этого значения для добавления к 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

1 Ответ

2 голосов
/ 20 января 2011

Неважно, я понял.

У меня была строка item = f.gets, которая вызывала бы следующую строку каждый раз, когда цикл выполнялся, пропуская каждую другую строку. Я знал, что это был нубский вопрос. : P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...