I detta inlägg kommer jag att använda Yahoo! Pipes för att hämta artiklar via screen scraping från två sajter som Stockholms bästa IT-konsulter byggt nämligen sajterna AllaStudier och Metrojobb. Dessa artiklar aggregeras sedan till ett gemensamt RSS-flöde.
Jag har inte hittat någon bra svensk översättning för screen scraping men jag har hittat ett bra verktyg för att utföra screen scraping. Det verktyget heter Yahoo! Pipes och Yahoo! beskriver det enligt följande:
Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web. Like Unix pipes, simple commands can be combined together to create output that meets your needs:
- combine many feeds into one, then sort, filter and translate it.
- geocode your favorite feeds and browse the items on an interactive map.
- power widgets/badges on your web site.
- grab the output of any Pipes as RSS, JSON, KML, and other formats.
Kort sagt är Yahoo! Pipes ett online-verktyg för att läsa olika typer av input (RSS, HTML, XML, CSV osv), knåda inputen och spotta ur sig output i ett önskat format såsom RSS, JSON osv.
Det finns massvis av moduler som går att använda för att hämta, konvertera och transformera data via Yahoo! Pipes. Ett av de mest kraftfulla verktygen är YQL-modulen som helt enkelt kan ställa YQL-frågor mot en webbsida eller ett XML-dokument. YQL har tidigare beskrivits av Lars Hendahl här på Stacktrace.
För att ställa en YQL-fråga mot ex Stacktrace och leta rätt på alla titlar/länkar till artiklar kan exempelvis följande fråga ställas:
select * from html where url = "http://cygni.se/kategori/stacktrace/" and xpath='//h2[@class="post-title"]'
YQL-frågor kan enkelt testköras via YQL Console.
I mitt Pipes-exempel har jag använd Pipes-moduler såsom Loop, Union, Item Builder, RegEx och Create RSS för att få till den aggregerade bilden över nyhetsflöden från både AllaStudier och Metrojobb i RSS-format. Det finns gott om Pipes-exempel och dokumentationen är bra så det är relativt enkelt att komma igång med Pipes.
Den aggregerade RSS-feeden kan ses här.