October 2001
Beginner
528 pages
15h 20m
English
A logical way to extend the
search_rank.plx script is to make it output its
results in the form of web pages, and to let one specify multiple
search engines and multiple query strings. The script in Example 18-2 (called search_rank2.plx)
does just that.
Example 18-2. A script to submit multiple queries to multiple search engines
#!/usr/bin/perl -w # search_rank2.plx # more full-featured search-ranking script: multiple engines, # multiple search queries, Web-based output. use strict; use WWW::Search; # configuration: my $max_results = 50; my $base_url = 'http://www.devicelink.com/'; my @engines = qw(AltaVista Google Lycos); my $result_fs_path = '/w1/e/elanus/search_rank'; my $result_web_path = '/search_rank'; my $index_file = "$result_fs_path/index.html"; my %data; # HoH: primary key: engine name. secondary key: query string. # value: rank # see end of script, after the __END_ _ token, for list of search queries my $url_pattern = quotemeta($base_url); chomp(my @queries = <DATA>); foreach my $engine (@engines) { my $engine_dir = $result_fs_path . '/' . $engine; unless (-e $engine_dir) { mkdir $engine_dir or die "can't mkdir '$engine_dir': $!"; } my $search = new WWW::Search($engine); $search->maximum_to_retrieve($max_results); foreach my $query (@queries) { my $query_dir = clean_name($query); my $result_dir = $engine_dir . '/' . $query_dir; unless (-e $result_dir) { mkdir $result_dir or die "can't mkdir '$result_dir': $!"; } my $detail_file = "$result_fs_path/$engine/$query_dir/index.html"; ...Read now
Unlock full access