Scraping von Websites mit Mechanize Gem

Web-Scraping (Web Harvesting oder Web Data Extraction) ist eine Computersoftwaretechnik zum Extrahieren von Informationen aus Websites. Die Mechanize-Bibliothek wird zur Automatisierung der Interaktion mit Websites verwendet. Mechanize Gem speichert und sendet automatisch Cookies, folgt Weiterleitungen und kann Links folgen und Formulare übermitteln.

Formularfelder können ausgefüllt und übermittelt werden. Außerdem werden die Websites, die Sie besucht haben, im Verlauf aufgezeichnet. Es nutzt Nokogiri, um eine Seite nach den relevanten Formularen und Schaltflächen zu analysieren, und bietet eine vereinfachte Schnittstelle zum Bearbeiten eines Webformulars.

Abhängigkeiten

  • Ruby 1.8.7, 1.9.2 oder 1.9.3

  • Nokogiri

Erste Schritte mit Mechanize:

Lass uns eine Seite holen!

Das Erste ist das Erste. Stellen Sie sicher, dass die Mechanisierung erforderlich ist und dass Sie ein neues Mechanisierungsobjekt instanziieren:

benötige 'Rubygems'
erfordern 'mechanisieren'

agent = Mechanize.new
Jetzt verwenden wir den von uns erstellten Agenten, um eine Seite abzurufen. Rufen wir Google mit unserem Mechanisierungsagenten ab:
page = agent.get ('http://google.com/')

Links finden

Mechanize gibt ein Seitenobjekt zurück, wenn Sie eine Seite abrufen, posten oder ein Formular senden. Wenn eine Seite abgerufen wird, analysiert der Agent die Seite und fügt dem Seitenobjekt eine Liste mit Links hinzu.

Nachdem wir nun die Startseite von Google abgerufen haben, versuchen wir, alle Links aufzulisten:

page.links.each macht |link|
  setzt link.text
Ende

Wir können die Links auflisten, aber Mechanize bietet ein paar Verknüpfungen, die uns helfen, einen Link zum Klicken zu finden. Nehmen wir an, wir wollten auf den Link klicken, dessen Text „Neuigkeiten“ lautet. Normalerweise müssten wir Folgendes tun:

page = agent.page.links.find { |l| l.text == 'News' }.click (oder)
page = agent.page.link_with(:text => 'News').click (oder)
agent.page.links_with(:text => 'News')[1].click (oder)
page.link_with(:href => '/something').

Formulare ausfüllen

Fahren wir mit unserem Google-Beispiel fort. Hier ist der Code, den wir bisher haben:

benötige 'Rubygems'
erfordern 'mechanisieren'

agent = Mechanize.new
page = agent.get('http://google.com/')

Wenn wir die Seite hübsch ausdrucken, können wir sehen, dass es ein Formular namens „f“ gibt, das ein paar Schaltflächen und ein paar Felder hat:

PP-Seite

Nachdem wir nun den Namen des Formulars kennen, können wir es von der Seite abrufen:

google_form = page.form('f')

Werfen wir einen Blick auf den gesamten Code:

benötige 'Rubygems'
erfordern 'mechanisieren'

agent = Mechanize.new
page = agent.get('http://google.com/')
google_form = page.form('f')
google_form.q = 'Ruby mechanisieren'
page = agent.submit(google_form)
PP-Seite

Scraping von Daten 
Mechanize verwendet Nokogiri zum Parsen von HTML. Was bedeutet das für Sie? Sie können eine Mechanisierungsseite wie ein Nokogiri-Objekt behandeln. Nachdem Sie Mechanize verwendet haben, um zu der Seite zu navigieren, die Sie scannen möchten, scannen Sie sie anschließend mit den Nokogiri-Methoden:
agent.get('http://someurl.com/').search("p.posted")

Der an Mechanize::Page#search übergebene Ausdruck kann ein CSS-Ausdruck oder ein XPath-Ausdruck sein:

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

Die Mechanize-Bibliothek wird zur Automatisierung der Interaktion mit Websites verwendet. Mechanize Gem speichert und sendet automatisch Cookies, folgt Weiterleitungen und kann Links folgen und Formulare übermitteln. Formularfelder können ausgefüllt und übermittelt werden. Außerdem werden die Websites, die Sie besucht haben, im Verlauf aufgezeichnet. nutzt Nokogiri, um eine Seite nach den relevanten Formularen und Schaltflächen zu analysieren und bietet eine vereinfachte Schnittstelle zum Bearbeiten eines Webformulars.

SchienenCarma hat am Ruby on Rails-Framework von Anfang an gearbeitet und es übernommen 250 RoR Projekte. Mit einem Team von über 100 RoR-Entwicklern, die mit den neuesten Techniken und Tools bestens vertraut sind, ist RailsCarma bestens geeignet, Sie bei all Ihren Entwicklungsanforderungen zu unterstützen.

Gerne helfen wir Ihnen bei Ihren Fragen weiter. Nutzen Sie unsere Kontaktiere uns Seite, um mit uns in Kontakt zu treten.

Lesen Sie verwandte Artikel:

Nehmen Sie Kontakt mit uns auf.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman