Ups...! Your right! Thanks! This would be the right script:
#!/usr/bin/env perl
use Modern::Perl;
use Mojo::UserAgent;
use Mojo::DOM;
my $ua = Mojo::UserAgent->new;
my $dom = $ua->get('http://mojolicious.org/')->res->dom;
foreach my $a_href ( $dom->find('a[href]')->each ) {
say $a_href;
}
Cheers!
El divendres, 20 gener de 2017 16:23:04 UTC+1, Joel Berger va escriure:
>
> You don't need to do $dom = Mojo::DOM->new($page); at all. ->res->dom
> returns an instance of Mojo::DOM, therefore your $page was already a
> Mojo::DOM. What you did next was then re-serialize the DOM object back to
> an HTML string and then REparse it! Of course it works, but it ... lets say
> ... not very efficient :-P
>
> On Thursday, January 19, 2017 at 4:18:34 PM UTC-6, mimosinnet wrote:
>>
>> Your question has inspired me this code, based on Joel Berger post
>> <http://blogs.perl.org/users/joel_berger/2012/05/using-mojodom.html>,
>> that finds *a href *tags in a page (I am also a beginner ;-) ).
>>
>> #!/usr/bin/env perl
>> use Modern::Perl;
>> use Mojo::UserAgent;
>> use Mojo::DOM;
>>
>> my $ua = Mojo::UserAgent->new;
>> my $page = $ua->get('http://mojolicious.org/')->res->dom;
>> my $dom = Mojo::DOM->new($page);
>>
>> foreach my $a_href ( $dom->find('a[href]')->each ) {
>> say $a_href;
>> }
>>
>> I am sorry it does not answer your question, but I hope it helps.
>>
>> Cheers!
>>
>> El dijous, 19 gener de 2017 9:58:42 UTC+1, Tin Woodman va escriure:
>>>
>>> Hi , i m beginner in Mojo. I have some expirience of php. Sorry if i use
>>> it for more understanding.
>>> I m develop for self simple script scrapper.
>>> Part 1; Scrape root elements
>>> I have a page with a urls and titles in table html.
>>> my $res=
>>> Mojo::UserAgent->new->get('http://example.com')->res->dom;
>>>
>>> I need grab from this page all elements,
>>> But i find in internet only this example . There i m find only text of
>>> element
>>> my $texts =
>>> $res->find('.tdcont td a')->map(sub { $_->text });
>>>
>>> I need a create array or something else . Maybe csv file.
>>> how i can create statement, when i need save from one element 2 or more
>>> data. For example
>>> url;title;
>>> url2;title2;
>>> or in php(sorry)
>>> array(array('url','title),array('url2','title2))
>>>
>>> Part 2; Scrape child elements
>>> When exists array or something else data . I need run another scrapp in
>>> loop .
>>> For example(php):
>>> foreach($data as $item) {
>>> $url = $item[0];
>>> $title = $item[1];
>>> // there i need a parse elements
>>> // go to url
>>> doParseChild();
>>> // there i need a exmaple how to check - exist element or not on page
>>> if (pagination exists) {
>>> //foreach ($pages as $page) {
>>> doParseChild();
>>> }
>>> }
>>> }
>>>
>>> When first iteration of loop ended , go to second iteraion . etc..
>>>
>>> Please help me , at least for a general understanding. Sorry for bad
>>> english and php .
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.