Ei ollut ihan tarpeeksi sateista, mutta täältä tulee:

#!/usr/bin/perl
use strict;

my $id = 0;

sub node
{
    my($lon,$lat,$name,$wiki,$desc) = @_;
    my %desc;

    $desc =~ s|<b>\s*(.*?)\s*</b>:\s*(.*?)\s*<br\s*/>|$desc{$1}=$2|goes;

    print "  <node id='", --$id, "' lat='$lat' lon='$lon'>\n";
    print "    <tag k='shop' v='bicycle' />\n";
    print "    <tag k='name' v='$name' />\n";

    if (defined($_ = $desc{Katuosoite})) {
    my ($str, $num) = split /\s+/, $_, 2;
    $str = ucfirst(lc($str)) if $str =~ /^[[:upper:]]+$/;
    print "    <tag k='addr:street' v='$str' />\n";
    print "    <tag k='addr:housenumber' v='$num' />\n" if defined $num;
    }

    if (defined($_ = $desc{Postinumero})) {
    my ($zip, $city) = split /\s+/, $_, 2;
    $city = ucfirst(lc($city)) if $city =~ /^[[:upper:]]+$/;
    print "    <tag k='addr:postcode' v='$zip' />\n";
    print "    <tag k='addr:city' v='$city' />\n";
    }

    print "    <tag k='addr:country' v='FI' />\n";

    if (defined($_ = $desc{Internet})) {
    print "    <tag k='url' v='$1' />\n" if /href="([^\"]*)"/;
    }

    if (defined($_ = $desc{Auki})) {
    tr /./:/;
    s/\s+-\s+/-/g;
    if (/^ark:\s*(ma\s*-pe\s*)?([0-9-:]*)\s+la:\s*([0-9-:]*)/i) {
        my $open;
        my ($ark, $la) = ($2, $3);
        $ark =~ s|^ma\s*-pe\s*||gi;
        if ($ark ne '') {
        $open = "Mo-Fr $ark";
        $open .= ";Sa $la" if ($la ne '');
        } elsif ($la ne '') {
        $open = "Sa $la";
        } else {
        undef $open;
        }

        print "    <tag k='opening_hours' v='$open' />\n" if defined $open;
    }
    }

    if (defined($_ = $desc{Puhelin})) {
    s/\s+-\s+/-/g;
    my(@phones) = map {
        if (/^\(0([0-9]+)\)([0-9 -]+)/ ||
        /^0([^0][0-9]*)([0-9 -]+)/) {
        my($area, $num) = ($1, $2);
        $num =~ tr/ -//d;
        "+358 $area $num";
        } else {
        undef;
        }
    }
    split /[\/,;]/;
    print "    <tag k='phone' v='", join(";", @phones), "' />\n";
    }

    print "    <tag k='source' v='http://www.polkupyoraily.net$wiki' />\n";
    print "  </node>\n";
}

undef $/;
$_=<>;

print "<?xml version='1.0' encoding='UTF-8'?>\n<osm version='0.6'>\n";

s|<Placemark>\s*
<name>(.*?)</name>
(\s*<Style>.*?</Style>)?\s*
<Point><coordinates>([0-9.]+),\s*([0-9.]+),\s*0</coordinates></Point>\s*
<description><!\[CDATA\[<a\s*
href="(/wiki/.*?)"\s*
title="(.*?)">(.*?)</a>
(\s*<br\s*/>)*
(.*?)
(\s*<br\s*/>)*\s*
\]\]></description>\s*</Placemark>|node $3,$4,$1,$5,$9|goesx;

print "</osm>\n";

Ei ihan kauneinta mahdollista Perliä, mutta kyllä se asiansa ajaa. Väänsin skriptiä pari tuntia. 70 kaupasta 68 on Suomessa, ja niistä muutama on jo kartalla tarkemmin.