1

私はこのようなものを持っています:

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 データの正しい行を生成しますか? しかし、どのように?

編集: ここに HTML コードがあります:ケース 1ケース 2

4

0 に答える 0