scRUBYt! Next Page e fill_textfield... Un aiutino?

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:

fill_textfield ‘Nome’, ‘Enry’
fill_textfield ‘Cognome’, ‘Shuck’
submit

Mentre se ne utilizzo solo uno il tutto 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:

successiva >>

Ho provato ad attivare la navigazione nelle pagine con questo codice ma
non funziona:

next_page “successiva”, :limit => 5

Qualcuno mi saprebbe aiutare??
Grazie
Ciao
Panthe

:wink:

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 :wink:

nel caso di nokogiri, puoi usare xpath o selettori css, decisamente più
pratico :stuck_out_tongue:

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 :slight_smile:

ciao,
A.

Ciao Andrea,
grazie della risposta…
Peccato perché mi pareva potente e sono anche riuscito a farlo
funzionare…
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…

Grazie
Ciao
Panthe

On 22/04/2010 17:17, Lucas P. wrote:

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 :stuck_out_tongue:

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 :wink:

ciao,
A.

ciao Panthe,

ti scrivo un po’ di corsa, il mio lavoro si basava proprio su
paginegialle :smiley:

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 :wink:

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” :stuck_out_tongue:

un saluto,
A.

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 è:

  1. compilare sia il campo cosa che il campo dove perché mi servirebbero
    solo i dati di alcune città e categoria specifica

  2. non riesco a navigare sulla pagina successiva

require ‘rubygems’
require ‘scrubyt’

paginegialle_data = Scrubyt::Extractor.define do

#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 :wink:
Cmq ti ringrazio per la cortesia!!!
Ciaooo

ok ti ho mandato una mail con lo script allegato :wink:

ciao,
A.

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