Skip to content

Instantly share code, notes, and snippets.

@henrik
Created January 28, 2010 17:13
Show Gist options
  • Save henrik/288933 to your computer and use it in GitHub Desktop.
Save henrik/288933 to your computer and use it in GitHub Desktop.

SHRUG: snabbhack: Blocket.se-scraper

Skrapa föremålsinformation från sökresultat på http://www.blocket.se. Parsa ofullständiga datumtider.

Uppgift

Filen imac.html är resultatet av en sökning på "imac" i Stockholm utförd 2010-01-27.

Skriv kod för att extrahera föremålsdata till en nästlad array. Tiden bör vara en Time, rubriken en String i UTF8 och priset en Integer.

Tiden kan anges som t.ex. "Idag 16:15", "Igår 17:25", "3 jan 13:09", "30 dec 07:28". Omvandla detta till en Time.

Tänk på att "3 jan" är i år men "30 dec" är förra året. Tänk på att oktober och maj förkortas olika på svenska och engelska.

Antag att "idag" är i skrivande stund och att det aldrig finns annonser som är ett år gamla eller äldre.

Exempel på output-format:

[
  [Thu Jan 28 16:15:00 +0100 2010, "Ny iMac", 9000],
  [Wed Dec 30 07:28:00 +0100 2009, "Gammal iMac", 8500]
]

Förslag på verktyg

Några Ruby-bibliotek som kan vara användbara:

  • Nokogiri: HTML-parser. Quick start, docs, tutorial. Installera: gem install nokogiri
  • Hpricot: HTML-parser. Wiki. Följer med OS X Leopard. Annars: gem install hpricot
  • iconv: Konvertera mellan teckenkodningar. Docs. Kommer med Ruby.
  • Mechanize: navigera webbplatser. Har Nokogiri inbyggt. Examples, guide, docs. Installera: gem install mechanize
  • Test::Unit: testning. Docs. Kommer med Ruby.

Övriga verktyg:

  • Firebug i Firefox för att kika runt i HTML-strukturen.
  • Alternativt inbyggda Web Inspector i Safari eller Chrome för samma sak.

Varianter

Anpassa uppgiftens omfång efter intresse, kunskap och tid. Några möjliga varianter:

  • Omvandla datum, utan att parsa.
  • Parsa, utan att omvandla datum.
  • Extrahera mer information, t.ex. länk, tumnagel-URL.
  • Låt ditt script ta en URL eller sökfras som input och scrapa från den riktiga webbplatsen.
  • Om sökresultaten är paginerade, skrapa från alla sidor.
  • Följ länkarna till föremålen och hämta beskrivningen.
  • Exportera i t.ex. YAML, JSON, RSS eller Atom.
  • Gör det testdrivet.
  • Skrapa något helt annat från någon helt annan sajt.

Av Henrik Nyh 2010-01-27 under MIT-licensen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment