Scraping de sites Web à l'aide de Mechanize Gem

Scrapage Web (récolte de données Web ou extraction de données Web) est une technique logicielle permettant d'extraire des informations à partir de sites Web. La bibliothèque Mechanize est utilisée pour automatiser l'interaction avec les sites Web. Mechanize gem stocke et envoie automatiquement des cookies, suit les redirections et peut suivre des liens et soumettre des formulaires.

Les champs du formulaire peuvent être remplis et soumis. Il conserve également une trace des sites que vous avez visités sous forme d'historique. Il exploite Nokogiri pour analyser une page pour les formulaires et boutons pertinents et fournit une interface simplifiée pour manipuler un formulaire Web.

Dépendances

  • rubis 1.8.7, 1.9.2 ou 1.9.3

  • Nokogiri

Premiers pas avec Mechanize :

Allons chercher une page !

La première chose est la première. Assurez-vous que vous avez requis Mechanize et que vous instanciez un nouvel objet Mechanize :

nécessite des « rubygems »
nécessiter « mécaniser »

agent = Mécaniser.nouveau
Nous allons maintenant utiliser l'agent que nous avons créé pour récupérer une page. Allons chercher Google avec notre agent de mécanisation :
page = agent.get ('http://google.com/')

Trouver des liens

Mechanize renvoie un objet page chaque fois que vous obtenez une page, publiez ou soumettez un formulaire. Lorsqu'une page est récupérée, l'agent analysera la page et mettra une liste de liens sur l'objet page.

Maintenant que nous avons récupéré la page d'accueil de Google, essayons de lister tous les liens :

page.links.each fait |link|
  met link.text
fin

Nous pouvons lister les liens, mais Mechanize propose quelques raccourcis pour nous aider à trouver un lien sur lequel cliquer. Disons que nous voulions cliquer sur le lien dont le texte est « Actualités ». Normalement, nous devrions faire ceci :

page = agent.page.links.find { |l| l.text == 'Actualités' }.cliquez (ou)
page = agent.page.link_with(:text => 'News').cliquez (ou)
agent.page.links_with(:text => 'Actualités')[1].cliquez (ou)
page.link_with(:href => '/quelque chose').

Remplir des formulaires

Continuons avec notre exemple Google. Voici le code que nous avons jusqu'à présent :

nécessite des « rubygems »
nécessiter « mécaniser »

agent = Mécaniser.nouveau
page = agent.get('http://google.com/')

Si nous imprimons joliment la page, nous pouvons voir qu'il existe un formulaire nommé « f », qui comporte quelques boutons et quelques champs :

page pp

Maintenant que nous connaissons le nom du formulaire, récupérons-le sur la page :

google_form = page.form('f')

Jetons un coup d'oeil au code tous ensemble :

nécessite des « rubygems »
nécessiter « mécaniser »

agent = Mécaniser.nouveau
page = agent.get('http://google.com/')
google_form = page.form('f')
google_form.q = 'ruby mécaniser'
page = agent.submit(google_form)
page pp

Grattage de données 
Mechanize utilise Nokogiri pour analyser le HTML. Qu'est-ce que cela signifie pour toi? Vous pouvez traiter une page mécanisée comme un objet nokogiri. Après avoir utilisé Mechanize pour accéder à la page que vous devez gratter, grattez-la en utilisant les méthodes nokogiri :
agent.get('http://someurl.com/').search("p.posted")

L'expression donnée à Mechanize::Page#search peut être une expression CSS ou une expression XPath :

agent.get('http://someurl.com/').search(".//p[@class='posted']")

La bibliothèque Mechanize est utilisée pour automatiser l'interaction avec les sites Web. Mechanize gem stocke et envoie automatiquement des cookies, suit les redirections et peut suivre des liens et soumettre des formulaires. Les champs du formulaire peuvent être remplis et soumis. Il garde également une trace des sites que vous avez visités sous forme d'historique. exploite Nokogiri pour analyser une page pour les formulaires et boutons pertinents et fournit une interface simplifiée pour manipuler un formulaire Web.

RailsCarma a travaillé sur le framework Ruby on Rails depuis ses débuts et a géré 250 RoR projets. Avec une équipe de plus de 100 développeurs RoR connaissant les dernières techniques et outils, RailsCarma est bien placé pour vous aider avec tous vos besoins de développement.

Nous serons heureux de vous aider avec vos questions. Utilisez notre Contactez-nous page pour nous connecter.

Lire les articles connexes :

Prenez contact avec nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench