Ciao a tutti,
mi sto avvicinando da poco al mondo di Ruby e sto’ provando a fare
script di estrapolazione dati. Molto interessante, finora sono riuscito
a fare qualcosina.
Ad estrarre un elenco da una pagina, raggrupparlo in un file XML con
campi separati.
Ho però alcuni problemi nell’utilizzo di scRUBYt!, non capisco bene come
usare il comando next_page e nemmeno come fare a riempire i campi di
ricerca quando sono più di uno.
Nello specifico vorrei inserire dei valori in più campi e poi fare il
submit.
Se però faccio in questo modo non funziona:
Inoltre non capisco come navigare su più pagine per l’estrazione dei
dati.
Il codice HTML che permette lo spostamento fra le varie pagine è il
seguente:
mi è capitato di fare webscraping, ma con scrubyt non sono riuscito a
farlo funzionare. con nokogiri (http://nokogiri.org) e open-uri è andato
tutto bene
nel caso di nokogiri, puoi usare xpath o selettori css, decisamente più
pratico
se hai bisogno di inviare una form, dovresti usare anche net/http per
l’invio della POST (open-uri supporta solo le GET), in alcuni casi, se
supportato, puoi costruire una richiesta GET ad-hoc, come avviene con i
motori di ricerca
Ciao Andrea,
grazie della risposta…
Peccato perché mi pareva potente e sono anche riuscito a farlo
funzionare…
anche io ho provato diverse librerie, comprese scrubyt, mechanize e
hpricot, ma alcune sono datate, altre non sono più sviluppate, altre
ancora non sono riuscito a farle andare
Manca completamente assistenza però il forum non c’è e quindi per i
dubbi ci si deve arrangiare arrabattando materiale qua e la…
Ho praticamente scritto il 60% di quello che mi serviva e funzionava
però mi sa che seguirò il tuo consiglio…
Per caso mi sai suggerire qualche risorsa, tutorial o quant’altro? Sul
sito ufficiale mi sembra ci sia poca roba…
non ricordo di preciso dove trovai le info, in ogni caso i tutorial di
nokogiri sono sufficienti per lavorarci, anche perchè principalmente le
operazioni sono solo “richiedi una pagina” → “fai il parsing del
risultato”. è un po’ più a basso livello di mechanize e scrubyt, quindi
devi studiarti la struttura della pagina ed applicare i selettori.
ci sarebbe un railscast su nokogiri
se devi interagire parecchio con la pagina (es: submit delle form),
forse è il caso che provi Mechanize (che sfrutta comunque nokogiri).
personalmente ho incontrato problemi ad usarlo e a farlo funzionare, nel
mio caso sono riuscito a fare tutto con nokogiri. forse ad un anno di
distanza è cambiato qualcosa, considerando che all’epoca usava hpricot.
magari se hai un esempio della pagina da parsare o delle operazioni che
devi svolgere, posso provare ad esserti più utile
ti scrivo un po’ di corsa, il mio lavoro si basava proprio su
paginegialle
quindi in caso ti mando il mio codice (appena lo ritrovo :P) che
funziona abbastanza bene, basato solo su nokogiri. nel mio caso generavo
un CSV importabile su mysql
quanto alla ricerca, su paginegialle puoi generare la richiesta con una
GET opportunamente formattata, senza sfruttare la form. quanto alla
paginazione, ho sfruttato le espressioni xpath sul link della “pagina
successiva”
Ciao Andrea,
cmq a me scRUBYt! funziona il problema è che non capisco alcune cose e
la documentazione scarseggia…
Mi servirebbero alcuni dati presenti sulle pagine gialle.
Questo codice mi estrapola correttamente i dati della prima pagina della
categoria abbigliamento.
Quello che non riesco a fare è:
#Perform the action(s)
fetch ‘http://paginegialle.it/’
fill_textfield ‘cosa’, ‘abbigliamento’
submit
#Construct the wrapper
azienda_info ‘//div[@class=“listing-client-line-pg clearfix”]’ do
azienda “//h3[@class=‘org orange’]”
indirizzo “//p[@class=‘street-address’]”
tel “//p[@class=‘tel’]”
categoria “//p[@class=‘client-category’]”
website “//a[@class=‘lnkwww’]/@href”
scheda “//a[@class=‘scheda’]/@href”
end
next_page “prossima”, :limit => 5
end
puts paginegialle_data.to_xml
Siccome non ho mai usato ruby per me è tutto nuovo e non so bene come
muovermi…
Se hai tempo di darmi qualche dritta
Cmq ti ringrazio per la cortesia!!!
Ciaooo
Guarda che coincidenza!!!
Bene, se tu riuscissi mi faresti ovviamente un grandissimo piacere.
In passato avevo già scritto codice di grabbing per PGOL ma era in VB e,
nonostante funzionasse benissimo e mi ha consentito di crearmi un
archivio notevole, è molto lento.
Quindi per aggiornare i dati dell’archivio volevo utilizzare un sistema
moderno appunto per velocizzare il tutto ed anche imparare qualche cosa
di nuovo.
Intanto ti ringrazio e ti auguro un buon week end.
Ciaoo
Luca
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.