Bimatampan’s Weblog

Agustus 22, 2008

[PERL] URL Link Grabber

Filed under: blog, Uncategorized — bimatampan @ 8:49 am

Jika anda melihat satu halaman web dan ingin mengambil semua alamat URL yang ada di halaman tersebut, maka anda membutuhkan Link URL Grabber. Aku menyusunnya berdasarkan contoh di dokumentasi perl modul HTML::LinkExtor dan skrip rss2html. Jadi sebagian kode diambil dari kedua sumber di atas. Berikut ini kode sumbernya :

 #!/usr/bin/perl</blockquote>
<blockquote>#</blockquote>
<blockquote>use strict;
use LWP::UserAgent;
use HTML::LinkExtor;
use URI::URL;
use Getopt::Std;

getopts('t:f:');
our($opt_t, $opt_f);

my $url = $opt_t;  # for instance
my $log = $opt_f;
my $item;
my $ua = LWP::UserAgent-&gt;new;

die("\n[~] Must be fill the target url !!!\nUsage : $0 -t \"http://www.google.co.id\" -f \"tesku.html\"\n") if not ($opt_t);

# Set up a callback that collect image links
my @imgs = ();
sub callback {
my($tag, %attr) = @_;
return if $tag ne 'a';  # we only look closer at &lt;img ...&gt;
push(@imgs, values %attr);
}

# Make the parser.  Unfortunately, we don't know the base yet
# (it might be diffent from $url)
my $p = HTML::LinkExtor-&gt;new(\&amp;callback);

# Request document and parse it as it arrives
my $res = $ua-&gt;request(HTTP::Request-&gt;new(GET =&gt; $url),
sub {$p-&gt;parse($_[0])});

# Expand all image URLs to absolute ones
my $base = $res-&gt;base;
@imgs = map { $_ = url($_, $base)-&gt;abs; } @imgs;

# Print them out
#print join("\n", @imgs), "\n";

&amp;printlog(&lt;&lt;HTML);
&lt;title&gt;Result of Live Link Extractor&lt;/title&gt;
&lt;table bgcolor="#000000" border="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;
&lt;TABLE CELLSPACING="1" CELLPADDING="4" BGCOLOR="#FFFFFF" BORDER=0 width="100%"&gt;
&lt;tr&gt;
&lt;td valign="middle" align="center" bgcolor="#EEEEEE"&gt;&lt;font color="#000000" face="Arial,Helvetica"&gt;&lt;B&gt;&lt;a href="https://bimatampan.wordpress.com"&gt;BimaTampan's Blog&lt;/a&gt;&lt;/B&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;
HTML

# print the channel items
foreach $item (@imgs) {
#next unless defined($item-&gt;{'title'}) &amp;&amp; defined($item-&gt;{'link'});
&amp;printlog("&lt;li&gt;&lt;a href=\"$item\"&gt;$item&lt;/a&gt;&lt;BR&gt;\n");
}

&amp;printlog(&lt;&lt;HTML);
&lt;/td&gt;
&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
HTML

sub printlog {
print $_[0];
open(LOO,"&gt;&gt;$log");
print LOO $_[0];
close(LOO);
return;
} 

Skrip ini akan men-download halaman yang dimaksud dan kemudian akan mem-parsing-nya dengan mengumpulkan hasilnya ke sebuah array (kumpulan link URL), terakhir akan menampilkan isi array tersebut ke sebuah file html yang berisi live link URL nya (bisa diklik langsung). Contoh :

 E:\data\linkextract&gt;linkex_0003.pl -t "http://www.google.co.id" -f "tes123.html" &lt;title&gt;Result of Live Link Extractor&lt;/title&gt;
&lt;table bgcolor="#000000" border="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;
&lt;TABLE CELLSPACING="1" CELLPADDING="4" BGCOLOR="#FFFFFF" BORDER=0 width="100%"&gt;
&lt;tr&gt;
&lt;td valign="middle" align="center" bgcolor="#EEEEEE"&gt;&lt;font color="#000000" fac
e="Arial,Helvetica"&gt;&lt;B&gt;&lt;a href="https://bimatampan.wordpress.com"&gt;BimaTampan's Bl
og&lt;/a&gt;&lt;/B&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;
&lt;li&gt;&lt;a href="http://images.google.co.id/imghp?hl=id&amp;tab=wi"&gt;http://images.google
.co.id/imghp?hl=id&amp;tab=wi&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://groups.google.co.id/grphp?hl=id&amp;tab=wg"&gt;http://groups.google
.co.id/grphp?hl=id&amp;tab=wg&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://books.google.co.id/bkshp?hl=id&amp;tab=wp"&gt;http://books.google.c
o.id/bkshp?hl=id&amp;tab=wp&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://blogsearch.google.co.id/?hl=id&amp;tab=wb"&gt;http://blogsearch.goo
gle.co.id/?hl=id&amp;tab=wb&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://mail.google.com/mail/?hl=id&amp;tab=wm"&gt;http://mail.google.com/m
ail/?hl=id&amp;tab=wm&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/intl/id/options/"&gt;http://www.google.co.id/i
ntl/id/options/&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/dirhp?hl=id&amp;tab=wd"&gt;http://www.google.co.id
/dirhp?hl=id&amp;tab=wd&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://picasaweb.google.co.id/home?hl=id&amp;tab=wq"&gt;http://picasaweb.g
oogle.co.id/home?hl=id&amp;tab=wq&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://docs.google.com/?hl=id&amp;tab=wo"&gt;http://docs.google.com/?hl=id
&amp;tab=wo&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/url?sa=p&amp;pref=ig&amp;pval=3&amp;q=http://www.google
.co.id/ig%3Fhl%3Did%26source%3Diglk&amp;usg=AFQjCNEaYzT2ATjWTNBxNj1-0CqEhXatDA"&gt;http
://www.google.co.id/url?sa=p&amp;pref=ig&amp;pval=3&amp;q=http://www.google.co.id/ig%3Fhl%3D
id%26source%3Diglk&amp;usg=AFQjCNEaYzT2ATjWTNBxNj1-0CqEhXatDA&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="https://www.google.com/accounts/Login?continue=http://www.google.co
.id/&amp;hl=id"&gt;https://www.google.com/accounts/Login?continue=http://www.google.co.
id/&amp;hl=id&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/search?q=Beijing+2008&amp;hl=id"&gt;http://www.goo
gle.co.id/search?q=Beijing+2008&amp;hl=id&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/advanced_search?hl=id"&gt;http://www.google.co
.id/advanced_search?hl=id&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/preferences?hl=id"&gt;http://www.google.co.id/
preferences?hl=id&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/language_tools?hl=id"&gt;http://www.google.co.
id/language_tools?hl=id&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/setprefs?sig=0_Wlj5UMtqXY_7NCUJX1ONlS1_TnU=
&amp;hl=en"&gt;http://www.google.co.id/setprefs?sig=0_Wlj5UMtqXY_7NCUJX1ONlS1_TnU=&amp;hl=e
n&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/setprefs?sig=0_Wlj5UMtqXY_7NCUJX1ONlS1_TnU=
&amp;hl=jw"&gt;http://www.google.co.id/setprefs?sig=0_Wlj5UMtqXY_7NCUJX1ONlS1_TnU=&amp;hl=j
w&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/intl/id/ads/"&gt;http://www.google.co.id/intl/
id/ads/&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.co.id/intl/id/about.html"&gt;http://www.google.co.id
/intl/id/about.html&lt;/a&gt;&lt;BR&gt;
&lt;li&gt;&lt;a href="http://www.google.com/ncr"&gt;http://www.google.com/ncr&lt;/a&gt;&lt;BR&gt;
&lt;/td&gt;
&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

E:\data\linkextract&gt; 

kemudian coba lihat ke file tes123.html , silahkan diklik. Anda akan melihat semua alamat URL yang terkandung di halaman yang di-grabber tadi. Selamat mencoba.🙂

5 Komentar »

  1. kok gak ada gambarnya mas ?

    Komentar oleh freemobilegame — Agustus 30, 2008 @ 4:53 pm

  2. ini dipaste kemana bos?

    Komentar oleh heiar — November 2, 2008 @ 7:10 pm

  3. @freemobilegame :
    lagi males nggambar….😀

    @heiar :
    ini dijalanken pake perl bro….

    Komentar oleh bimatampan — November 17, 2008 @ 6:44 pm

  4. wah ini yang lagi aku cari mas
    cuman masih belum familiar dengan perl
    itu web yang di grab google.co.id ya?
    trus filter content yang di grap di bagian mana?
    aku bingung mbacanya. apa tes123.html itu

    Komentar oleh Kuro! — Februari 24, 2010 @ 8:01 am

  5. @Kuro! :
    yup contoh web yg digrab gogel tuh,
    filter content yg di-grab sudah ada keterangannya tuh di source codenya…😀
    itu menjadi tugas dari HTML::LinkExtor,
    file tes123.html itu berisi output live link hasil grab tadi.

    enjoy it….

    Komentar oleh bimatampan — Februari 26, 2010 @ 5:53 pm


RSS feed for comments on this post. TrackBack URI

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Buat situs web atau blog gratis di WordPress.com.

%d blogger menyukai ini: