#!/usr/bin/perl use strict; use LWP::UserAgent; use HTTP::Request; use HTTP::Headers; use XML::Simple; use DBI; use WWW::Mechanize; use HTML::TokeParser; #GetBuy("C9731A","Laser, Compatible, LaserJet 5500 Series,Cyan"); sub GetBuy { my $oem_PN = $_[0]; my $ItemDesc = $_[1]; my @ItemDesc = split(',',$ItemDesc); my $price; my $description; my $type; my $title; my $numofitems; my $descriptionCheck = 'FALSE'; my $Item; #print @ItemDesc; my $agent = WWW::Mechanize->new(); $agent->get("http://www.buy.com/retail/usersearchresults.asp?querytype=home&qu=". $oem_PN. "&qxt=home&display=&dclksa=1"); my $stream = HTML::TokeParser->new(\$agent->{content}); for my $i (1,2){ my $tag = $stream->get_tag("a"); while (($tag->[1]{class} ne "medbluetext") && ($stream->{pullparser_eof} ne '1')){ $tag = $stream->get_tag("a"); } $tag = $stream->get_tag("a"); $description = $stream->get_trimmed_text("/a"); my $tag = $stream->get_tag("b"); while (($tag->[1]{class} ne "adPrice") && ($stream->{pullparser_eof} ne '1')){ $tag = $stream->get_tag("b"); } $price = $stream->get_trimmed_text("/b"); if (($description =~ /COMPATIBLE/i) or ($description =~ /Replacement/i)){ $type = 'Compatible'; } else { $type = 'OEM'; } foreach $Item(@ItemDesc){ if ($description =~ /$Item/i){ $descriptionCheck = 'TRUE'; } } if ($descriptionCheck) { insertrecord($oem_PN,$price,$description,$type); } } } sub insertrecord { my $oem_PN = $_[0]; my $price = $_[1]; my $description = $_[2]; my $type = $_[3]; #################################################################### # Connect to database # #################################################################### my $buydataconnection = DBI-> connect('DBI:mysql:database=ads;host=localhost','UserName','Passwrod') or die "Can't connect to database:$DBI::errstr\n"; #################################################################### # Prepare sql statement # #################################################################### my $buysqlstatement = "insert into buy (OEM_PartNum,Price,Description,Type) Values ('".$oem_PN."','".$price."','".$description."','".$type."')"; #print $sqlstatement."\n"; my $result = $buydataconnection->prepare($buysqlstatement) or die "Can't prepare SQL statement: $DBI::errstr\n"; #################################################################### # Execute SQL statement # #################################################################### $result->execute() or die "Can't execute SQL statement: $DBI::errstr\n"; $buydataconnection->disconnect; $buysqlstatement = ''; my $oem_PN = ''; $result = 0; $price = 0; } return 1;