#!/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; #GetStaples("TN550","Laser, Compatible, HL5240, 5250, 5280DW,7,000 Page Yield - Same as ADSTN580"); sub GetStaples { my $oem_PN = $_[0]; my $ItemDesc = $_[1]; my @ItemDesc = split(',',$ItemDesc); my $Item; my $price; my $description; my $type; my $title; my $numofitems; my $descriptionCheck - 'FALSE'; my $agent = WWW::Mechanize->new(autocheck => 1, cookie_jar => undef); $agent->get("http://www.staples.com/webapp/wcs/stores/servlet/home?&langId=-1&storeId=10001&catalogId=10051"); $agent->form_name("headerSearchForm"); $agent->field("searchkey",$oem_PN); $agent->click(); my $stream = HTML::TokeParser->new(\$agent->{content}); my $tag = $stream->get_tag("title"); $title = $stream->get_trimmed_text("/title"); if ($title !~ /that was easy/){ print "Title:".$title."--".$ItemDesc."--".$oem_PN."\n"; # open(OUTFILE, ">>output.html") or die "Can't open output.txt: $!"; # print OUTFILE $agent->content(); # close(OUTFILE); if ($title !~ /Generic Error/){ $description = $title; $stream = HTML::TokeParser->new(\$agent->{content}); $tag = $stream->get_tag("td"); # while ((($tag->[1]{class} ne "pricenew") or ($tag->[1]{class} ne "pricenew specon")) && ($stream->{pullparser_eof} ne '1')){ # $tag = $stream->get_tag("td"); # } $tag = $stream->get_tag("dd"); while (($tag->[1]{class} ne "pis") && ($stream->{pullparser_eof} ne '1')){ $tag = $stream->get_tag("dd"); } $price = $stream->get_trimmed_text("/i"); if ($price eq ''){ $price = 'NULL'; } if ($description =~ /Compatible/){ $type = 'Compatible'; } else { $type = 'OEM'; } foreach $Item(@ItemDesc){ if ($description =~ /$Item/i){ $descriptionCheck = 'TRUE'; } } print $descriptionCheck; if ($descriptionCheck == 'TRUE') { print "insertrecord(".$oem_PN.",".$price.",".$description.",".$type.")"; insertrecord($oem_PN,$price,$description,$type); } } } $stream = 0; $tag = 0; } sub insertrecord { my $oem_PN = $_[0]; my $price = $_[1]; my $description = $_[2]; my $type = $_[3]; #################################################################### # Connect to database # #################################################################### my $staplesdataconnection = DBI-> connect('DBI:mysql:database=ads;host=localhost','Username','password') or die "Can't connect to database:$DBI::errstr\n"; #################################################################### # Prepare sql statement # #################################################################### my $sqlstatement = "insert into ads.`Staples` (OEM_PartNum,Price,Description,Type,Site) Values ('".$oem_PN."','".$price."','".$description."','".$type."','Staples')"; #print $sqlstatement; my $result = $staplesdataconnection->prepare($sqlstatement) 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"; $staplesdataconnection->disconnect; $sqlstatement = ''; my $oem_PN = ''; $result = 0; $price = 0; } return 1;