Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

RE: Extract and modify IMG SRC tags in an HTML document.

by johncoswell (Acolyte)
on Apr 27, 2000 at 18:01 UTC ( #9399=note: print w/ replies, xml ) Need Help??


in reply to Extract and modify IMG SRC tags in an HTML document.

Here's how I would do it: 1. Read in the whole HTML file into a variable:

open FILE,"filename"; read FILE,$file,100000; close FILE;
(I've seen few HTML docs that are over 100000 bytes in size)
2. Split the $file by "<IMG":
@lines = split(/\<IMG/,$file);

3. Shift out the first line of @lines (it doesn't have an <IMG> tag in it, so we don't need it) and begin to create the new HTML file
$newfile = shift @lines;

4. For each line in @lines:
Split the line at the first ">"
Replace the "SRC=" element with the new "SRC=" element, assuming that the new graphic is based on the old graphic's URL
foreach $line (@lines) { $pos = index($line,'>'); $tag = substr($line,0,$pos+1); $restofline = substr($line,$pos+1); $tag =~ s/SRC\=\"(.*?)\"/SRC\=\"$newurls{$1}\"/gi; $newfile .= $tag . $restofline . "\n"; }
5. Do whatever with the $newfile:
print $newfile;
Complete code: open FILE,"filename"; read FILE,$file,100000; close FILE; @lines = split(/\<IMG/,$file); $newfile = shift @lines; foreach $line (@lines) { $pos = index($line,'>'); $tag = substr($line,0,$pos+1); $restofline = substr($line,$pos+1); $tag =~ s/SRC\=\"(.*?)\"/SRC\=\"$newurls{$1}\"/gi; $newfile .= $tag . $restofline . "\n"; } %


Comment on RE: Extract and modify IMG SRC tags in an HTML document.
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://9399]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-11-29 03:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (203 votes), past polls