0

私は Web サイトを解析していますが、潜在的に数百万行のコンテンツを探しています。ただし、csv/excel/ods では 100 万行を超えることはできません。

そのため、暫定を使用して空のコンテンツの保存を除外しようとしています。ただし、機能していません: 私のコードは csv に空の行を作成し続けます。

これは私が持っているコードです:

# create csv
CSV.open("neverending.csv", "w") do |csv|
csv << ["kuk","date","name"]

# loop through all urls
File.foreach("neverendingurls.txt") do |line|
begin
doorzoekbarefile = Nokogiri::HTML(open(line))
for k in 1..999 do

# PROVISIONARY / CONDITIONAL
unless doorzoekbarefile.at_xpath("//td[contains(style, '60px')])[#{k}]").nil?

# xpaths
kuk = doorzoekbarefile.at_xpath("(//td[contains(@style,'60px')])[#{k}]")
date = doorzoekbarefile.at_xpath("(//td[contains(@style, '60px')])[#{k}]/following-sibling::*[1]")
name = doorzoekbarefile.at_xpath("(//td[contains(@style, '60px')])[#{k}]/following-sibling::*[2]")

# save to csv
csv << [kuk,date,name]

end
end
end

rescue
puts "error bij url #{line}"
end
end
end

何が問題なのか、問題を解決する方法を知っている人はいますか? 基本的に、xpathが空のときにcsvデータの新しい行を作成しないように、コードを変更するだけです。

4

1 に答える 1

1

これは実際には xpath とは関係ありません。単純な Array#empty?

row = [kuk,date,name]
csv << row if row.compact.empty?

ところで、あなたのコードはめちゃくちゃです。投稿する前に少なくともインデントする方法を学びましょう。

于 2012-11-13T13:03:02.730 に答える