René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

a perl script that shows how to query tel.search.ch

This script makes a HTTP GET and queries the adresses of the 250 largest swiss banks.
#!/usr/bin/perl

use LWP::UserAgent; 
use Getopt::Std;

$ua = new LWP::UserAgent();
# ---- Change the next line if you are behind a firewall...
# $ua->proxy(['http', 'ftp'] => 'http://enter.your.proxy.here:8080');

$ua -> agent ("Mozilla/3.01GoldC-GDIP10  (WinNT; I)");

#getopt('nvshpotrk');

#getopts('n:v:');


my @firmenNamen = (
'UBS',
'Credit Suisse Group',
'Raiffeisen-Konzern',
'Zuercher Kantonalbank',
'Banque Cantonale Vaudoise',
'Banque Cantonale de Geneve',
'Berner Kantonalbank',
'St.Gallische Kantonalbank',
'Migros Bank',
'Luzerner Kantonalbank',
'Republic National Bank New York',
'Bank Julius-Baer-Gruppe',
'Union Bancaire Privee',
'Thurgauer Kantonalbank',
'Neue Aargauer Bank',
'Basellandschaftliche Kantonalbank',
'Bank Leu AG',
'EFG Bank European Financial Group',
'LGT Bank in Liechtenstein',
'Liechtensteinische Landesbank',
'Graubuendner Kantonalbank',
'Basler Kantonalbank',
'Banca del Gottardo',
'Aargauische Kantonalbank',
'Valiant Holding',
'Coop Bank',
'VP Bank Gruppe',
'Banque Paribas (Suisse) SA',
'Zuger Kantonalbank',
'Societe Generale Bank & Trust',
'Kantonalbank Schwyz',
'Banca della Svizzera Italiana',
'Banque Cantonale de Fribourg',
'Banque Cantonale du Valais',
'UEB United European Bank',
'Discount Bank & Trust Company',
'ABN Amro Bank N.V. Amsterdam',
'BSI SA',
'Banque Nationale de Paris (Suisse)',
'Solothurner Bank SoBa',
'Banca dello Stato del Cantone Ticino',
'BDL Banco di Lugano',
'Credit Agricole Indosuez',
'Neuenburger Kantonalbank',
'Bank-Vontobel-Gruppe',
'Credit Lyonnais (Suisse) SA',
'Spar + Leihkasse in Bern',
'Banque Privee Edmond de Rothschild',
'IRB Interregio Bank',
'Lloyds Bank Plc,',
'Banca Unione di Credito',
'Luzerner Regiobank',
'Schaffhauser Kantonalbank',
'Bank Linth',
'Habib Bank AG',
'Gewerbekasse in Bern',
'Hypothekarbank Lenzburg',
'Bank Sarasin & Cie.',
'Coutts & Co. AG',
'Deutsche Bank (Suisse) SA',
'Clariden Bank',
'E Capital Bank',
'Cantrade Privatbank AG',
'Glarner Kantonalbank',
'Obwaldner Kantonalbank',
'Corner Banca SA',
'ABN Amro Bank (Schweiz)',
'Banque Bruxelles Lambert (Suisse)',
'Arab Bank (Switzerland)',
'Amtsersparniskasse Thun',
'Bank Cial (Schweiz)',
'Merrill Lynch Capital Markets',
'Bank Hofmann AG',
'Nidwaldner Kantonalbank',
'Banque Cantonale du Jura',
'Urner Kantonalbank',
' Helaba (Schweiz) AG',
'First National Bank Southern Africa',
'Citibank (Switzerland)',
'Bank in Lagnau',
'Sparkasse Zuercher Oberland',
'DG Bank (Schweiz) AG',
'Regiobank Solothurn',
'ING Bank (Schweiz)',
'Kantonalbank Appenzell I.R.',
'Hypotheken- und Handelsbank',
'Merrill Lynch Bank (Suisse) SA',
'Bank Morgan Stanley AG',
'Citibank N. A. Switzerland',
'St.Gallische Creditanstalt',
'Dresdner Bank (Schweiz) AG',
'Bank fuer Handel und Effekten',
'WIR Bank',
'Bank von Ernst & Cie AG',
'Bank Hapoalim (Schweiz) AG',
'Ihag Handelsbank Zuerich'
#'Bank of Tokyo-Mitsubishi'
);

foreach $a (@firmenNamen) {
  print "

########### $a ###################

";
  print FindAddresses($a);
}

sub FindAddresses {
  $name = shift;

  $name =~ s/ /+/g;
  $name =~ s/^/%26/g;

	#$req = new HTTP::Request 'GET', "http://tel.search.ch/result.de.html?name=Bank+of+Tokyo-Mitsubishi&misc=&strasse=&ort=&kanton=&tel=";
	$req = new HTTP::Request 'GET', "http://tel.search.ch/result.de.html?name=&misc=&strasse=&ort=&kanton=&tel=";

	$res = $ua->request($req);

	die "Something wrong" unless ($res->is_success) ;

	@answer=split /
/, $res->content;


  my $retAddressen;
  #$inAddressen=0;
  $passendeEintrage=0;

  $adresse;
  $inHowManyTables=0;

	foreach $row (@answer) {
    if ($row =~ m/Sie sehen alle passenden Einträge:/) {
      $passendeEintrage=1;
    }
    if ($passendeEintrage) {
      if($row =~ m/<table/) {
        $inHowManyTables++;
        #print "$inHowManyTables
";
      }
      if ($row =~ m/</table/ and $inHowManyTables) {
        $inHowManyTables--;
        #print "$inHowManyTables: $row
";

        if ($inHowManyTables==1) {

          $adresse =~ s/<br>/
/g;
          $adresse =~ s/<[^>]+>//g;

          $adresse =~ s/&auml;/ä/g;
          $adresse =~ s/&uuml;/ü/g;
          $adresse =~ s/&ouml;/ö/g;

          $adresse =~ s/&Auml;/Ä/g;
          $adresse =~ s/&Uuml;/Ü/g;
          $adresse =~ s/&Ouml;/Ö/g;

          $adresse =~ s/&amp;/&/g;

          $adresse =~ s/&egrave;/è/g;
          $adresse =~ s/&eacute;/é/g;
          $adresse =~ s/&acirc;/â/g;
          $adresse =~ s/&ecirc;/ê/g;
          $adresse =~ s/&ocirc;/ô/g;

          $adresse =~ s/&ccedil;/ç/g;

          $adresse =~ s/^s*//mg;

          $retAddressen .= $adresse."
------
";

          $adresse="";
        }
      }
    }
    if ($inHowManyTables == 2) {
      #print "y
";
      $adresse.=$row;
    }
    if ($inHowManyTables==3) {
      #print "x
";
      $adresse="";
      $passendeEintrage=0;
    }
	}

  return $retAddressen;
}