API Searches
Perform reliable searches with GetSearchResults.
In [Hack #17], a Perl script is used to perform
an automated eBay search and then email new listings as
they’re discovered. Although the script serves a
valuable function, it has the notable handicap of relying entirely on
“scraping” (via the
WWW::Search::eBay module) to retrieve its search
results.
Scraping involves parsing standard web pages in order to retrieve the
desired data. As you might expect, any changes to
eBay’s search pages, even minor ones, will break the
script until the WWW::Search::eBay module on which
it relies is updated to work with the new version.
The API, on the other hand, provides an officially supported interface to eBay’s search engine, which means that scripts based on the API will be much more robust and nearly invulnerable to changes in eBay’s search pages.
A Simple Search
Here’s a simple Perl script,
search.pl
, that performs a search and displays the
results.
#!/usr/bin/perl
require 'ebay.pl';
use Getopt::Std;
getopts('d');
$keywords = shift @ARGV or die "Usage: $0 [-d] keywords";
PAGE: [1]
while (1) {
my $rsp = call_api({ Verb => 'GetSearchResults', [2]
DetailLevel => 0,
Query => $keywords,
SearchInDescription => $opt_d ? 1 : 0,
Skip => $page_number * 100,
});
if ($rsp->{Errors}) {
print_error($rsp);
last PAGE;
}
foreach (@{$rsp->{Search}{Items}{Item}}) { [3]
my %i = %$_;
($price, $time, $title, $id) = @i{qw/CurrentPrice EndTime Title Id/}; [4] print "($id) $title [\$$price, ends $time]\n"; ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access