私はこのようなものを持っています:
require 'nokogiri'
require 'open-uri'
require 'csv'
fields = ['Full name', 'Address', 'Valid phone', 'E-mail']
availableFields = []
availableDataFields = []
CSV.open('myfile4.csv', 'a', {:col_sep => ';', :force_quotes => true}) do |csv|
doc = Nokogiri::HTML(open(some_of_my_urls))
#We are on the right page if we have content in this tag
if doc.xpath('//div[@class = "pad8"]/h3').length > 0
availableFields << 'Full name'
availableFields << doc.xpath('//div[@class = "pad8"]/div[@class = "block pad8"]/table/tr/td[1]').text.gsub(/\n+|\r/, "").strip.split(':')
#We received and parsed available fields on this page from td[1]
#availableFields = ['Full name', 'Address', 'E-mail']
availableDataFields << doc.xpath('//div[@class = "pad8"]/h3').text
availableDataFields << doc.xpath('//div[@class = "pad8"]/div[@class = "block pad8"]/table/tr/td[3]').text.gsub(/\n+|\r/, "").strip
#We received and parsed available fields data on this page from another td (td[3])
#availableDataFields = ['John Doe', 'New York', 'john.doe@mail.com']
end
#Write to CSV file
csv << fields
csv << availableDataFields
end
したがって、CSVファイルを開くと、次のようになります。
------------------------------------------------------------------------------------------------------
| Full name | Address | Valid phone | E-mail |
| ---------------------------------------------------------------------------------------------------|
| John Doe | New York | john.doe@mail.com | |
------------------------------------------------------------------------------------------------------
これの代わりに
------------------------------------------------------------------------------------------------------
| Full name | Address | Valid phone | E-mail |
| ---------------------------------------------------------------------------------------------------|
| John Doe | New York | | john.doe@mail.com |
------------------------------------------------------------------------------------------------------
一部のページ ( some_of_my_urls
) には使用可能なフィールドがすべて含まれていない可能性がありますが、どのページに含まれているかを解析でき、そのページに含まれる可能性のあるすべての使用可能なフィールド ( fields
) を確実に把握できます。
どうすればこれを適切に修正でき、どのように(おそらく)それを使用できますかavailableFields
。比較fields
してavailableFields
、これに基づいて csv データの正しい行を生成しますか? しかし、どのように?