Scraping di siti Web utilizzando Mechanize Gem

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.

Dipendenze

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

Mettiti in contatto con noi.

Iscriviti per gli ultimi aggiornamenti

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian