2017-11-16 3 views
2

Wenn ich versuche, dies über das Terminal laufen kann ich die Daten analysieren/anzeigen, aber wenn ich schreibe in pets_array = []Nokogiri Beispiel nicht zeigt Array (Rubin)

Ich bin nichts

Mein Code zu sehen werden wie folgt:

require 'HTTParty' 
require 'Nokogiri' 
require 'JSON' 
require 'Pry' 
require 'csv' 

page = HTTParty.get('https://newyork.craigslist.org/search/pet?s=0') 

parse_page = Nokogiri::HTML(page) 

pets_array = [] 

parse_page.css('.content').css('.row').css('.result-title hdrlnk').map do |a| 
    post_name = a.text 
    pets_array.push(post_name) 
end 

CSV.open('pets.csv', 'w') do |csv| 
    csv << pets_array 
end 

Pry.start(binding) 
+0

' $ ('. row') 'zeigt keine Elemente auf dieser Seite in der Browser-Konsole –

Antwort

1

Vielleicht genau zu sein Sie jeden Anker-Tag mit Klasse .result-title.hdrlnk innen .result-info, .result-row, .rows und .content zugreifen können:

Da Sie map verwenden, können Sie die pets_array Variable verwenden, um den Text auf jedem wiederholten Element zu speichern, ohne dass Sie etwas drücken müssen.

Wenn Sie die Daten in dem Array gespeichert schreiben wollen, dann ist man drücken kann, direkt keine Notwendigkeit, als ein leeres Array (der Grund, weil Sie eine leere CSV-Datei erhalten) neu definiert:

require 'httparty' 
require 'nokogiri' 
require 'csv' 

page = HTTParty.get 'https://newyork.craigslist.org/search/pet?s=0' 
parse_page = Nokogiri::HTML page 
pets_array = parse_page.css('.content .rows .result-row .result-info .result-title.hdrlnk').map &:text 
CSV.open('pets.csv', 'w') { |csv| csv << pets_array } 
+0

Vielen Dank .... ist das obige" all ", das benötigt wird? Könntest du das gesamte Revise meines Codes einfügen? Ich habe versucht, das oben, aber es wurde Fehler geworfen ... Ich kann damit ein bisschen herumspielen, wenn nötig. –

+0

Der Arbeitscode ist [hier] (https://gist.github.com/vnhnhm/8326c20da01b582c033de6ca154fbabf), ich habe den CSV-Teil weggelassen. –