NAME

HTML::Grabber

SYNOPSIS

use HTML::Grabber;
use LWP::Simple;

my $dom = HTML::Grabber->new( html => get('http://twitter.com/ned0r') );

$dom->find('.tweet-content')->each(sub {
    my $body = $_->find('.tweet-text')->text;
    my $when = $_->find('.js-tweet-timestamp')->attr('data-time');
    my $link = $_->find('.js-permalink')->attr('href');
    print "$body $when (link: $link)\n";
});

DESCRIPTION

HTML::Grabber provides a jQuery style interface to HTML documents. This makes parsing and manipulating HTML documents trivially simple for those people familiar with http://jquery.com.

It uses XML::LibXML for DOM parsing/manipulation and HTML::Selector::XPath for converting CSS expressions into XPath.

AUTHOR

Martyn Smith <martyn@dollyfish.net.nz>

SELECTORS

All selectors are CSS. They are internally converted to XPath using HTML::Selector::XPath. If some creative selector you're trying isn't working as expected, it may well be worth checking out the documentation for that module to see if it's supported.

METHODS

BUILD

find( $selector )

Get descendants of each element in the current set of matched elements, filtered by a selector.

prev( [ $selector ] )

Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.

next( [ $selector ] )

Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.

filter( $selector )

Reduce the set of matched elements to those that match the selector

text_filter( $match )

Filter the current set of matched elements to those that contain the text specified by $match. If you prefer, $match can also be a Regexp

parent()

Get the parent of each element in the current set of matched elements

text()

Get the combined text contents of each element in the set of matched elements, including their descendants.

text_array()

Return text for each element as a list

html()

Return the HTML of the currently matched elements

html_array()

Return the HTML each element as a list

remove()

Removes the matched nodes from the DOM tree returning them

attr( $attribute )

Get the value of an attribute for the first element in the set of matched elements.

each

Execute a sub for each matched node

map

Execute a sub for each matched node returning a list containing the result of each sub

CLASS METHODS

uniq( @nodes )

Internal method for taking a list of XML::LibXML::Elements and returning a unique list