Raschiamento del web (web Harvesting o Web Data Extraction) è una tecnica software per computer che consente di estrarre informazioni dai siti Web. La libreria Mechanize viene utilizzata per automatizzare l'interazione con i siti Web. Mechanize gem memorizza e invia automaticamente cookie, segue reindirizzamenti e può seguire collegamenti e inviare moduli.
I campi del modulo possono essere compilati e inviati. Tiene inoltre traccia dei siti che hai visitato come cronologia. Sfrutta Nokogiri per analizzare una pagina alla ricerca dei moduli e dei pulsanti pertinenti e fornisce un'interfaccia semplificata per manipolare un modulo web.
-
rubino 1.8.7, 1.9.2 o 1.9.3
-
Nokogiri
Iniziare con Mechanize:
Prendiamo una pagina!
La prima cosa è la prima. Assicurati di aver richiesto la meccanizzazione e di istanziare un nuovo oggetto meccanizzazione:
richiedono "rubygems" richiedere "meccanizzare" agente = Meccanizza.nuovo Ora utilizzeremo l'agente che abbiamo creato per recuperare una pagina. Prendiamo Google con il nostro agente meccanizzato: pagina = agente.get ('http://google.com/') Trovare collegamenti
Mechanize restituisce un oggetto pagina ogni volta che ottieni una pagina, pubblichi o invii un modulo. Quando viene recuperata una pagina, l'agente analizzerà la pagina e inserirà un elenco di collegamenti nell'oggetto della pagina.
Ora che abbiamo recuperato la home page di Google, proviamo a elencare tutti i collegamenti:
page.links.each fa |link| inserisce link.text FINE
Possiamo elencare i collegamenti, ma Mechanize fornisce alcune scorciatoie per aiutarci a trovare un collegamento su cui fare clic. Diciamo che vogliamo fare clic sul collegamento il cui testo è "Notizie". Normalmente dovremmo fare così:
pagina = agent.page.links.find { |l| l.text == 'Notizie' }.click (o) page = agent.page.link_with(:text => 'Notizie').click (o) agent.page.links_with(:text => 'Notizie')[1].click (o) page.link_with(:href => '/qualcosa'). Compilazione di moduli
Continuiamo con il nostro esempio su Google. Ecco il codice che abbiamo finora:
richiedono "rubygems" richiedere "meccanizzare" agente = Meccanizza.nuovo pagina = agent.get('http://google.com/')
Se stampiamo bene la pagina, possiamo vedere che c'è un modulo chiamato "f", che ha un paio di pulsanti e alcuni campi:
pagina pp
Ora che conosciamo il nome del modulo, prendiamolo dalla pagina:
google_form = pagina.form('f')
Vediamo insieme il codice:
richiedono "rubygems" richiedere "meccanizzare" agente = Meccanizza.nuovo pagina = agent.get('http://google.com/') google_form = pagina.form('f') google_form.q = 'rubino meccanizzato' pagina = agente.submit(google_form) pagina pp Raschiamento dei dati Mechanize utilizza Nokogiri per analizzare l'HTML. Che cosa significa questo per te? Puoi trattare una pagina meccanizzata come un oggetto nokogiri. Dopo aver utilizzato Mechanize per accedere alla pagina che devi raschiare, quindi raschiala utilizzando i metodi nokogiri: agent.get('http://someurl.com/').search("p.posted")
L'espressione data a Mechanize::Page#search può essere un'espressione CSS o un'espressione XPath:
agent.get('http://someurl.com/').search(".//p[@class='posted']")
La libreria Mechanize viene utilizzata per automatizzare l'interazione con i siti Web. Mechanize gem memorizza e invia automaticamente cookie, segue reindirizzamenti e può seguire collegamenti e inviare moduli. I campi del modulo possono essere compilati e inviati. Tiene inoltre traccia dei siti che hai visitato come cronologia. sfrutta Nokogiri per analizzare una pagina per i moduli e i pulsanti pertinenti e fornisce un'interfaccia semplificata per manipolare un modulo web.
RailsCarma ha lavorato sul framework Ruby on Rails sin dalla sua fase nascente e se ne è occupato 250 RdR progetti. Con un team di oltre 100 sviluppatori RoR esperti nelle tecniche e negli strumenti più recenti, RailsCarma è adatto per aiutarti con tutte le tue esigenze di sviluppo.
Siamo felici di aiutarvi con le vostre domande. Utilizza il nostro Contattaci pagina per connetterti con noi.
Leggi articoli correlati: