Skrapning av webbplatser med Mechanize Gem

Web skrapning (webbharvesting eller webbdataextraktion) är en datorprogramteknik för att extrahera information från webbplatser. Mechanize-biblioteket används för att automatisera interaktion med webbplatser. Mechanize gem lagrar och skickar cookies automatiskt, följer omdirigeringar och kan följa länkar och skicka in formulär.

Formulärfält kan fyllas i och skickas. Den håller också reda på de webbplatser som du har besökt som en historia. Det utnyttjar Nokogiri för att analysera en sida för relevanta formulär och knappar och ger ett förenklat gränssnitt för att manipulera ett webbformulär.

Beroenden

  • ruby 1.8.7, 1.9.2 eller 1.9.3

  • Nokogiri

Komma igång med Mechanize:

Låt oss hämta en sida!

Det första är först. Se till att du har krävt mekanisering och att du instansierar ett nytt mekaniseringsobjekt:

kräver "rubygems"
kräver "mekanisera"

agent = Mekanisera.ny
Nu använder vi agenten vi har skapat för att hämta en sida. Låt oss hämta Google med vår mekaniseringsagent:
sida = agent.get ('http://google.com/')

Hitta länkar

Mechanize returnerar ett sidobjekt när du får en sida, ett inlägg eller skickar ett formulär. När en sida hämtas kommer agenten att analysera sidan och lägga en lista med länkar på sidobjektet.

Nu när vi har hämtat Googles hemsida, låt oss försöka lista alla länkarna:

page.links.each gör |länk|
  lägger länk.text
slutet

Vi kan lista länkarna, men Mechanize ger några genvägar som hjälper oss att hitta en länk att klicka på. Låt säga att vi ville klicka på länken vars text är "Nyheter". Normalt skulle vi behöva göra detta:

sida = agent.page.links.find { |l| l.text == 'Nyheter' }.klicka (eller)
page = agent.page.link_with(:text => 'Nyheter'). klicka (eller)
agent.page.links_with(:text => 'Nyheter')[1].klicka (eller)
page.link_with(:href => '/något').

Fylla i formulär

Låt oss fortsätta med vårt google-exempel. Här är koden vi har hittills:

kräver "rubygems"
kräver "mekanisera"

agent = Mekanisera.ny
page = agent.get('http://google.com/')

Om vi ganska skriver ut sidan kan vi se att det finns en form som heter 'f', som har ett par knappar och några fält:

pp sida

Nu när vi vet namnet på formuläret, låt oss hämta det från sidan:

google_form = page.form('f')

Låt oss ta en titt på koden tillsammans:

kräver "rubygems"
kräver "mekanisera"

agent = Mekanisera.ny
page = agent.get('http://google.com/')
google_form = page.form('f')
google_form.q = 'ruby mechanize'
sida = agent.submit(google_form)
pp sida

Skrapa data 
Mechanize använder Nokogiri för att analysera HTML. Vad betyder detta för dig? Du kan behandla en mekaniserad sida som ett nokogiri-objekt. När du har använt Mechanize för att navigera till sidan som du behöver skrapa, skrapa den sedan med nokogiri-metoder:
agent.get('http://someurl.com/').search("p.posted")

Uttrycket som ges till Mechanize::Page#search kan vara ett CSS-uttryck eller ett XPath-uttryck:

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

Mechanize-biblioteket används för att automatisera interaktion med webbplatser. Mechanize gem lagrar och skickar cookies automatiskt, följer omdirigeringar och kan följa länkar och skicka in formulär. Formulärfält kan fyllas i och skickas. Den håller också reda på de webbplatser som du har besökt som en historia. använder Nokogiri för att analysera en sida för relevanta formulär och knappar och tillhandahåller ett förenklat gränssnitt för att manipulera ett webbformulär.

RailsCarma har arbetat på Ruby on Rails ramverk från början och har hanterat 250 RoR projekt. Med ett team på över 100+ RoR-utvecklare som är väl bevandrade med de senaste teknikerna och verktygen är RailsCarma väl lämpad att hjälpa dig med alla dina utvecklingsbehov.

Vi hjälper dig gärna med dina frågor. Använd vår Kontakta oss sida för att ansluta till oss.

Läs relaterade artiklar:

Kontakta oss.

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish