如何方便地提取数据扩展url

How can I easily extract that data-expanded-url?

本文关键字:数据 扩展 url 提取 何方      更新时间:2023-09-26

我试图解析一个定义为data-expanded-url的URL的HTML网页。只有一个URL要提取,只有一个data-expanded-url。这是网页的主要部分,我所做的所有事情都发生在这里:

<p class="js-tweet-text tweet-text">The Air <strong>Jordan</strong> 11 Retro
<strong>Low</strong> &#39;<strong>Nightshade</strong>&#39; is <strong>now available</strong>
    <a href="http://tt.co/5w574TicgS" rel="nofollow" dir="ltr" data-expanded-url="http://swoo.sh/1fKCmCB" class="twitter-timeline-link" target="_blank" title="http://swoo.sh/1fKCmCB" >
        <span class="tco-ellipsis"></span>
        <span class="invisible">http://</span>
        <span class="js-display-url">swoo.sh/1fKCmCB</span>
        <span class="invisible"></span><span class="tco-ellipsis">
        <span class="invisible">&nbsp;</span></span>
    </a>
    <a href="http://tt.co/Ug4qjrW9DD" class="twitter-timeline-link" data-pre-embedded="true" dir="ltr" >pic.twitter.com/Ug4qjrW9DD</a>
</p>

这是data-expanded-url:

部分
<a href="http://tt.co/5w574TicgS" rel="nofollow" dir="ltr" data-expanded-url="http://swoo.sh/1fKCmCB"`

我怎样才能轻松地提取data-expanded-url像Mojo::DOM或HTML::解析器或XPath?

下面是你需要的代码:

use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
my $mech = WWW::Mechanize->new();
my $url = "https://twitter.com/search?q=from%3Anikestore%20%22jordan%22%20%22nightshade%22%20%22low%22%20%22now%20available%22%20since%3A2014-5-2&src=typd";
$mech->get($url);
my $tree = HTML::TreeBuilder::XPath->new_from_content( $mech->content() );
my ($link) = $tree->findvalues('//p[ @class =~ /'btweet-text'b/ ]/a[1]/@data-expanded-url');
$tree->delete();
print $link, "'n";

下面是一个Mojo::DOM示例:

use Mojo::DOM;
my $html = do { local $/; <DATA> };
my $dom = Mojo::DOM->new( $html );
say $dom
    ->find( 'a.twitter-timeline-link' )
    ->map( attr => 'data-expanded-url' )
    ->grep( sub { defined } )
    ->join( "'n" );