2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline...

47
2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1 Introduction 17.2 Introduction to LPW 17.3 LPW Commands 17.4 The LPW::Simple Module 17.5 HTML Parsing 17.6 Introduction to Advanced Networking 17.7 Protocols 17.8 Transport Control Protocol (TCP) 17.9 Simple Mail Transfer Protocol (SMTP) 17.10 Post Office Protocol (POP) 17.11 Searching the World Wide Web

Transcript of 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline...

Page 1: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Chapter 17 - Web Automation and Networking

Outline17.1 Introduction17.2 Introduction to LPW17.3 LPW Commands17.4 The LPW::Simple Module17.5 HTML Parsing17.6 Introduction to Advanced Networking17.7 Protocols17.8 Transport Control Protocol (TCP)17.9 Simple Mail Transfer Protocol (SMTP)17.10 Post Office Protocol (POP)17.11 Searching the World Wide Web

Page 2: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.1 Introduction

• Perl– Internet-based language

– Used to create CGI scripts

– Web-related modules

– Automated tasks

Page 3: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.2 Introduction to LPW

• LWP– Library for the WWW in Perl

• Common use: mimic browser request of a Web page

– Request object• HTTP::Request

– method» One of get, put, post or head

– URL» Address of request item

– headers» Key-value pairs that provide extra information

– content» Data sent from client to server

Page 4: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.2 Introduction to LPW (II)

– Response object• HTTP::Response

– code» Status indicator for outcome of request

– message» String that corresponds to code

– headers» Additional information about response

» Description of content– content

» Data associated with response

Page 5: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.2 Introduction to LPW (III)

– User Agent• Usually a Web browser

– timeout» How long user waits before timing out

– agent» Name of the user agent

– from» E-mail address of person using the browser

– credentials» Any usernames or passwords for the response

Page 6: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.3 LPW Commands

• LWP– Is used to interact programmatically between a Perl program

and a Web server.

Page 7: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline1 #!usr/bin/perl

2 # Fig 17.1: fig17_01.pl

3 # Simple LWP commands.

4

5 use strict;

6 use warnings;

7 use LWP::UserAgent;

8

9 my $url = "http://localhost/home.html";

10 open( OUT, ">response.txt" ) or

11 die( "Cannot open OUT file: $!" );

12

13 my $agent = new LWP::UserAgent();

14 my $request = new HTTP::Request( 'GET' => $url );

15 my $response = $agent->request( $request );

16

17 if ( $response->is_success() ) {

18 print( OUT $response->content() );

19 }

20 else {

21 print( OUT "Error: " . $response->status_line() . "\n" );

22 }

23

24 print( OUT "\n------------------------\n" );

25

26 $url = "http://localhost/cgi-bin/fig16_02.pl";

27

fig17_01.pl

This creates a new user agent object

This creates a new request object. The argument indicates that it is a GET request, requesting $url

If there was a response then the program will output the content

If there was no response then it finds out the status of the response

Page 8: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_01.pl

Program Output

28 $request = new HTTP::Request( 'POST', $url );

29 $request->content_type( 'application/x-www-form-urlencoded' );

30 $request->content( 'type=another' );

31 $response = $agent->request( $request );

32

33 print( OUT $response->as_string() );

34 print( OUT "\n" );

35 close( OUT ) or die( "Cannot close out file : $!" );

<html><title>This is my home page.</title> <body bgcolor = "skyblue"><h1>This is my home page.</h1><b>I enjoy programming, swimming, and dancing.</b><br></br><b><i>Here are some of my favorite links:</i></b><br></br><a href = "http://www.C++.com">programming</a><br></br><a href = "http://www.swimmersworld.com">swimming</a><br></br><a href = "http://www.abt.org">dancing</a><br></br></body></html>------------------------

Creates a new request to POSTDetermines how the response will be encodedGets the agents request and

prints it out as a string

Page 9: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_01.pl

Program Output

HTTP/1.1 200 OKConnection: closeDate: Tue, 21 Nov 2000 15:20:19 GMTServer: Apache/1.3.12 (Win32)Content-Type: text/htmlClient-Date: Tue, 21 Nov 2000 15:20:19 GMTClient-Peer: 127.0.0.1:80Title: Your Style Page <html><head><title>Your StylePage</title></head><body bgcolor = "#ffffc0" text = "#ee82ee" link = "#3cb371" vlink = "#3cb371"><p>This is your style page.</p><p>You chose the colors.</p><a href = "/fig16_01.html">Choose a newstyle.</a></body></html>

Page 10: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.3 LPW Commands

Fig. 17.2 Contents of home.html.

<html> <title>This is my home page.</title>  <body bgcolor = "skyblue"> <h1>This is my home page.</h1> <b>I enjoy programming, swimming, and dancing.</b> <br></br>  <b><i>Here are some of my favorite links:</i></b> <br></br> <a href = "http://www.C++.com">programming</a> <br></br> <a href = "http://www.swimmersworld.com">swimming</a> <br></br> <a href = "http://www.abt.org">dancing</a> <br></br> </body></html>

Page 11: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.4 The LPW::Simple Module

• LPW::Simple module– Provides procedural interface to LPW

Page 12: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_03.pl

Program Output

1 #!usr/bin/per; 2 # Fig 17.3: fig17_03.pl 3 # A program that uses LWP::Simple 4 5 use strict; 6 use warnings; 7 use LPW::Simple; 8 9 my $url = "HTTP://localhost/home.html";10 my $page = get( $url );11 print( “\n$page\n\n" );12 my $status = getprint( $url );13 print( "\n\n$status\n" );14 $status = getstore( $url, "page.txt" )15 print( "\n$status\n" )

<html><title>This is my home page.</title> <body bgcolor = "skyblue"><h1>This is my home page.</h1><b>I enjoy programming, swimming, and dancing.</b><br></br><b><i>Here are some of my favorite links:</i></b><br></br><a href = "http://www.C++.com">programming</a><br></br><a href = "http://www.swimmersworld.com">swimming</a><br></br><a href = "http://www.abt.org">dancing</a><br></br></body></html>

Retrieves a Web page and stores its contents in a scalar

Gets the Web page and stores it into a file

Page 13: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_03.pl

Program Output

<html> <title>This is my home page.</title> <body bgcolor = "skyblue"><h1>This is my home page.</h1><b>I enjoy programming, swimming, and dancing.</b><br></br> <b><i>Here are some of my favorite links:</i></b><br></br><a href = "http://www.C++.com">programming</a><br></br><a href = "http://www.swimmersworld.com">swimming</a><br></br><a href = "http://www.abt.org">dancing</a><br></br></body></html> 200 200

Page 14: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.5 HTML Parsing

• HTML::TokeParser– Way of extracting HTML easily

– Can walk through manually but TokeParser is simpler

• Token– Array references

– 5 types• Start token (S)

– starting HTML tag

• End token (E)

– Array holding the tag, the name, and the original text

• Text token (T)

• Comment token (C)

• Declaration token (D)

Page 15: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.5 HTML Parsing

Fig. 17.4 Resulting page.txt file.

<html><title>This is my home page.</title> <body bgcolor = "skyblue"><h1>This is my home page.</h1><b>I enjoy programming, swimming, and dancing.</b><br></br> <b><i>Here are some of my favorite links:</i></b><br></br><a href = "http://www.C++.com">programming</a><br></br><a href = "http://www.swimmersworld.com">swimming</a><br></br><a href = "http://www.abt.org">dancing</a><br></br></body></html>

Page 16: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_05.pl

1 #!/usr/bin/perl

2 # Fig 17.5: fig17_05.pl

3 # A program to strip tags from an HTML document.

4

5 use strict;

6 use warnings;

7 use LWP::UserAgent;

8 use HTML::TokeParser;

9

10 my $url = "http://localhost/home.html";

11 my $agent = new LWP::UserAgent();

12 my $request = new HTTP::Request( 'GET' => $url );

13 my $response = $agent->request( $request );

14 my $document = $response->content();

15

16 my $page = new HTML::TokeParser( \$document );

17

18 while ( my $token = $page->get_token() ) {

19 my $type = shift( @{ $token } );

20 my $text = shift( @{ $token } );

21

22 if ( $type eq "T" ) {

23 print( "$text" );

24 }

25 }

Gets a Web page and stores its contents to $document

Creates a new TokeParser object

Goes through the tokens to display the text

Page 17: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_05.pl

Program Output

This is my home page.  This is my home page.I enjoy programming, swimming, and dancing.  Here are some of my favorite links: programming swimming dancing

Page 18: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.6 Introduction to Advanced Networking

• Sockets– All network communications are done with sockets

– 1 connection = 2 sockets

– Allows date to be passed• Streams

– Sequenced

– Reliable

• Datagrams

– Less reliable

– Not sequenced

– Require less system resources

» Connection is not permanent

Page 19: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.6 Introduction to Advanced Networking (II)

• Server– One endpoint / socket

– Listens for a connection

– Knows how to process requests

• Client– Other endpoint / socket

– Knows the server

– Initiates the connection

– Sends a request

Page 20: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.7 Protocols

• Standardization Protocols– Need to be standardized or else server would have to know

how to process each individual request

– HTTP (Chapter 7)

– POP• receiving e-mail

– STMP• sending e-mail

Page 21: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.8 Transport Control Protocol (TCP)

• Internet connections– TCP

• Most general way for computers to talk

• Connection-oriented

Page 22: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline1 #!/usr/bin/perl

3 # TCP chat client.

4

5 use strict;

6 use warnings;

7 use IO::Socket;

8

9 my $host = '192.168.1.71';

10 my $port = 5833;

11

12 my $socket = new IO::Socket::INET(

13 PeerAddr => $host,

14 PeerPort => $port,

15 Proto => "tcp",

17 or die( "Cannot connect to $host:$port : $@\n" );

18

20 print( $socket "What is your name?\n" );

21 print( "What is your name?\n" );

22

23 my $response = <$socket>;

24 print( "From server: $response" );

25

26 my $input = <STDIN>;

27

28 chomp( $input );

29

2 # Fig 17.6: fig17_06.pl

19 local $| = 1;

16 Type => SOCK_STREAM )

fig17_06.pl

Initializes the location of the server

Creates the Internet connection, will make a socket and automatically connect if server is found

Turns off line buffering

Page 23: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_06.pl

30 while ( $input ne "q" ) {

31 print( $socket "$input\n" );

32 $response = <$socket>;

33 print( "From server: $response" );

34

35 $input = <STDIN>;

36 chomp( $input );

37 }

38

39 print( "done\n" );

40 print( $socket "$input\n" );

41

42 close ( $socket ) or die( "Cannot close socket: $!" );

The user enters ‘q’ to close the connection

Page 24: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

4

8

10

16

18

21

24

28

32 }3334 close ( $server ) or die( "Cannot end connection: $!" );

31 print( "From client: $response\n" );30 chomp( $response );29 $response = <$client>;

27 print( $client "$input" );26 my $input = <STDIN>;25 while ( $response ne "q" ) {

23 print( "From client: $response\n" );22 chomp $response;

20 my $response = <$client>;19 my $client = $server->accept();

17 local $| = 1;

15 or die( "Cannot be a server on $port: $@\n" );14 Listen => 10 )13 Type => SOCK_STREAM,12 LocalPort => $port,11 my $server = new IO::Socket::INET(

9 my $port = 5833;

7 use IO::Socket;6 use warnings;5 use strict;

3 # TCP chat server.2 # Fig 17.7: fig17_07.pl1 #!/usr/bin/perl

fig17_07.pl

Specifies the port to check for a client

Creates a new socket object

Listen makes the server wait for a connection and specifies that 10 clients can be waiting to connect

Page 25: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_07.pl

Program Output

Page 26: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_07.pl

Program Output

Page 27: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_07.pl

Program Output

Page 28: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_07.pl

Program Output

Page 29: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_07.pl

Program Output

Page 30: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.9 Simple Mail Transfer Protocol (SMTP)

• Net::SMTP module

Page 31: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

3029 print( textfield( "subject" ), br() );

28 print("Enter what you want to appear in the \"subject\" header:");2726 print( textfield( "to" ), br() );25 print( "Enter what you want to appear in the \"to\" header: " );2423 print( textfield( "address" ), br() );22 print( "Enter where you would like to send this e-mail: " );2120 print( textfield( "from" ), br() );

19 print( "Enter what you want to appear in the \"from\" header: " );1817 print( textfield( "server" ), br() );16 print( "Enter the SMTP server to connect to: " ); 1514 print( start_form( -action => "fig17_09.pl" ) );1312 print( h1( "The e-mail home page." ) );1110 print( start_html( "Send e-mail!" ) );9 print( header() );87 use CGI qw( :standard );6 use warnings;5 use strict;43 # Form to send an e-mail message.2 # Fig. 17.8: fig17_08.pl1 #!/usr/bin/perl

fig17_08.pl

Gets the STMP server

Gets the address to send the e-mail to

Page 32: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

38 print( end_html() );3736 print( br(), submit( "submit" ), end_form() );3534 -wrap => 1 ), br() );33 print( textarea( -name => "message", -rows => 5, -columns => 50, 32 print( br() );31 print( "Enter the message you want to send in the e-mail: " );

fig17_08.pl

Program Output

Page 33: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

30 $smtp->quit();29 $smtp->dataend();28 $smtp->datasend( "$message\n" );27 $smtp->datasend( "Subject: $subject\n\n" );26 $smtp->datasend( "To: $to\n" );25 $smtp->datasend( "From: $from\n" );24 $smtp->data();2322 $smtp->to( "$address" );21 $smtp->mail( "$my_address" );2019 or die( "Cannot send e-mail: $!" );18 my $smtp = new Net::SMTP( "$server", Hello => "$server" )1716 my $my_address = 'my_address.smtp';15 my $message = param( "message" );14 my $subject = param( "subject" );13 my $to = param( "to" );12 my $address = param( "address" );11 my $from = param( "from" );10 my $server = param( "server" );98 use CGI qw( :standard );7 use Net::SMTP;6 use warnings;5 use strict;43 # Send an e-mail message.2 # Fig 17.9: fig17_09.pl1 #!/usr/bin/perl

fig17_09.pl

Creates a new Net::SMTP object

The mail method creates an e-mail message, takes address of sender

The to method is who the receiver of the email is

Starts and stops the transfer of data

Page 34: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

35 print( end_html() );34 print( h1( "Your e-mail has been sent." ) );33 print( start_html( "Send e-mail!" ) );32 print( header() );31

fig17_09.pl

Page 35: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.10 Post Office Protocol (POP)

• POP– Created to make the storage and retrieval of e-mail easier

– Allow checking, reading, storing and deleting of mail

Page 36: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

25 print( end_html() );

24

23 FORM

22 </form>

21 <input type = "reset" value = "reset">

20 <input type = "submit" value = "check mail">

19 <input name = "offset" value = "0" type = "hidden">

18 <input name = "server" type = "text" size = "20"></p>

17 <p>Server:

16 <input name = "password" type = "password" size = "20"></p>

15 <p>Password:

14 <input name = "userName" type = "text" size = "20"></p>

13 <p>Username:

12 <form action = "fig17_11.pl" method = "post">

11 print <<FORM;

10

9 print( start_html( -title => 'Please Login' ) );

8 print( header() );

7

6 use CGI qw( :standard );

5 use warnings;

4 use strict;

3

2 # Fig. 17.10: fig17_10.pl

1 #!/usr/bin/perl

fig17_10.pl

Creates an HTML page that asks for a username and password and then the IP address of the server

Page 37: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_10.pl

Page 38: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

3130 print( "<p>$_: " );29 for ( $start .. $end ) {2827 my $end = ( $offset2 < $messages ? $offset2 : $messages );26 my $start = 1 + $offset;25 my $offset2 = $offset + 5;24 my $offset1 = $offset - 5;23 print( "<p>You have $messages messages in your inbox.</p>" );22 my $messages = $pop->Count();2120 print( h1( "Cannot connect: $!" ) );19 PASSWORD => $password, HOST => $server ) or18 my $pop = new Mail::POP3Client( USER => $user, 1716 print( start_html( -title => "Check your mail!" ) );15 print( header() );1413 my $offset = param( "offset" );12 my $server = param( "server" );11 my $password = param( "password" );10 my $user = param( "userName" );98 use CGI qw( :standard );7 use Mail::POP3Client;6 use MD5;5 use warnings;4 use strict;32 # Fig. 17.11: fig17_11.pl1 #!/usr/bin/perl

fig17_11.pl

Gets the parameters from the user entered Web data

Allows only a total of 5 messages to be displayed at once

A tally of the messages in the inbox

Page 39: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline34 }35

37 }3839 print <<FORM1 if ( $offset );

41 <input name = "userName" value = $user type = "hidden"> 42 <input name = "password" value = $password type = "hidden"> 43 <input name = "server" value = $server type = "hidden"> 44 <input name = "offset" value = $offset1 type = "hidden"> 45 <input type = "submit" value = "See previous 5">46 </form>47 FORM14849 print <<FORM2 if ( $end != $messages );

51 <input name = "userName" value = $user type = "hidden"> 50 <form action = "fig17_11.pl" method = "post">

52 <input name = "password" value = $password type = "hidden"> 53 <input name = "server" value = $server type = "hidden"> 54 <input name = "offset" value = $offset2 type = "hidden"> 55 <input type = "submit" value = "See next 5">

61 $pop->Close();

60

59 print( end_html() );

5857 FORM256 </form>

32 foreach ( $pop->Head( $_ ) ) {

36 print( "</p>\n" );

40 <form action = "fig17_11.pl" method = "post">

33 /^(From|subject):\s+/i and print $_, "<br/>";

fig17_11.plGoes through the headers of each message

The next 5 messages to be shown

Page 40: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_11.pl

Program Output

Page 41: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_11.pl

Page 42: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

17.11 Searching the World Wide Web

• Searching– A major application of the Web

– Perl has several modules for searching

Page 43: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

3332 print( "WebCrawler", br() );31 print( "name = \"WebCrawler\" value = \"1\">" );

30 print( "<input type = \"checkbox\" " ); 2928 print( "HotBot", br() );27 print( "name = \"HotBot\" value = \"1\">" );26 print( "<input type = \"checkbox\" " ); 2524 print( "AltaVista", br() );23 print( "name = \"AltaVista\" value = \"1\">" );22 print( "<input type = \"checkbox\" " ); 2120 print( textfield( "amount" ), br(), br() );19 print( "from each search engine, 1-50: " );18 print( br() );17 print( "Enter number of sites you want " );1615 print( textfield( "query" ), br(), br() );14 print( "Enter query: " );13

12 print( start_form( -method =>"post",-action =>"fig17_13.pl" ));1110 print( h1( "Search the Web!" ) );9 print( header(), start_html( "Web Search" ) );87 use CGI qw( :standard );6 use warnings;5 use strict;43 # Program to begin a Web search.2 # Fig. 17.12: fig17_12.pl1 #!/usr/bin/perl

fig17_12.pl

What topic is to be searched for

How many results the user desires to be returned

Allows the user to check which of the 4 engines to use

Page 44: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_12.pl

Program Output

34 print( "<input type = \"checkbox\" " );

35 print( "name = \"NorthernLight\" value = \"1\">" );

36 print( "NorthernLight", br() );

37

38 print( br(), submit( "Search!" ), end_form() );

39

40 print( end_html() );

Page 45: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline1 #!/usr/bin/perl

3 # A program that collects search results.

4

5 use strict;

6 use warnings;

7 use WWW::Search;

8 use CGI qw( :standard );

9

10 my @engines;

11 my $search;

12

13 my $query = param( "query" );

14 my $amount = param( "amount" );

15

17 print( header(), start_html() );

18 print( h1( "Please try again." ) );

20 print( end_html() );

21 exit();

22 }

23

24 if ( !$amount || $amount > 50 ) {

25 $amount = 5;

26 }

27

28 my $value;

29

16 if ( !$query ) {

2 # Fig 17.13: fig17_13.pl

19 print( "<a href = \"/cgi-bin/fig17_12.pl\">Go back</a>" );

fig17_13.pl

Allows a large use of search engines

Displays if the user did not enter any input

If there is no amount or it is greater than 50 then set it to 5

Page 46: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline31 push( @engines, "HotBot" ) if ( param( "HotBot" ) );

30 push( @engines, "AltaVista" ) if ( param( "AltaVista" ) );

32 push( @engines, "WebCrawler" ) if ( param( "WebCrawler" ) );

33 push( @engines, "NorthernLight" ) if ( param( "NorthernLight" ) );

34

35 print( header() );

36 print( start_html( "Web Search" ) );

37

38 foreach ( @engines ) {

39 my $search = new WWW::Search( $_ );

40 $search->native_query( WWW::Search::escape_query( $query ) );

42

43 for ( 1 .. $amount ) {

44 my $result = $search->next_result();

45 $value = $result->url();

46 print( "<a href = $value>$value</a>" );

47 print( br() );

48 }

49

50 print( br() );

51 }

52

53 print( end_html() );

41 print( b( i( "Web sites found by $_:" ) ), br() );

fig17_13.pl

Insert the engines into the array if the user checked them

Displays the results

Searches the Web for results

Page 47: 2001 Prentice Hall, Inc. All rights reserved. Chapter 17 - Web Automation and Networking Outline 17.1Introduction 17.2Introduction to LPW 17.3 LPW Commands.

2001 Prentice Hall, Inc. All rights reserved.

Outline

fig17_13.pl