Skrapa föremålsinformation från sökresultat på http://www.blocket.se. Parsa ofullständiga datumtider.
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]
]
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.
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.