微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Don Crawler ,获取 div onClick 的 Javascript 属性

如何解决Don Crawler ,获取 div onClick 的 Javascript 属性

我想循环 div - my-node-div , 并获取链接,它是我正在循环的 DIV 中的 javascript onclick 属性

我有这个结构-

<div id="container">
<div class="my-node-div" onclick="window.location='https://www.website1.com'">
<h1>Title One</h1>
</div>

<div class="my-node-div" onclick="window.location='https://www.website2.com'">
<h1>Title Two</h1>
</div>

<div class="my-node-div" onclick="window.location='https://www.website3.com'">
<h1>Title Three</h1>
</div>
</container>

所以我会做类似的东西 -

 $html    = $client->request('GET',$url_of_website);
                $crawler = new Crawler();
                $crawler->filter('div#container > div.my-node-div')->each(
                   function (Crawler $node,$index) use ($refer) {
                      // GET THE TEXT  
                     $H1 =  $node->filter('h1')->text();
                      // HOW Could i GET THE window.location= WEBSITE ?
                     $LINK = ?
               });
         }

我怎样才能获得这个 div 中的 javascript 链接

解决方法

要从节点获取属性,您将在 extract 上使用 $node[1] 方法。

$crawler = new Crawler($html);
$links = $crawler->filter('div#container > div.my-node-div')
    ->each(function(Crawler $node) {
        return $node->extract(['onclick']);
    });

现在 $links 将包含该节点 onclick 属性中的任何内容的数组。

array (
  0 => 
  array (
    0 => 'window.location=\'https://www.website1.com\'',),1 => 
  array (
    0 => 'window.location=\'https://www.website2.com\'',2 => 
  array (
    0 => 'window.location=\'https://www.website3.com\'',)

然后您必须从那里解析出链接,也许可以尝试 Extract URLs from text in PHP 以获得一些想法。

  1. Accessing Node Values

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。