像jQuery一样在php里读取html

发现一个很好用的工具 PHP Simple HTML DOM Parser,可以像jQuery一样处理html,可以很方便的进行后台采集。

比如,采集王者荣耀的英雄克制关系

<?php require 'simple_html_dom.php'; $hero_id='189'; $html = file_get_html('https://pvp.qq.com/web201605/herodetail/'.$hero_id.'.shtml'); $relation=array(); foreach($html->find('div[class="hero-info l info"]') as $text){ //print_r($text); $hero_type=$text->find('div[class="hero-f1 fl"]',0)->plaintext; $hero_list=$text->find('div[class="hero-list hero-relate-list fl"]',0)->find('ul li a'); $hero_desc=$text->find('div[class="hero-list-desc"]',0)->find('p'); for($i=0;$i<count($hero_list);$i++){ array_push($relation,array( 'hero_id'=>$hero_id, 'relation_type'=>$hero_type, 'related_hero_id'=>str_replace(".shtml",'',$hero_list[$i]->href), 'relation_desc'=>$hero_desc[$i]->plaintext )); } } print_r($relation);
Code language: HTML, XML (xml)
Array ( [0] => Array ( [hero_id] => 189 [relation_type] => 最佳搭档=> 115 [relation_desc] => 高渐离渐离3技能可以获得加速和群体隐身效果得加速和群体隐身效果2技能可以把敌人拉在一起并眩晕1] => Array ( [hero_id] => 189 [relation_type] => 最佳搭档=> 131 [relation_desc] => 李白2] => Array ( [hero_id] => 189 [relation_type] => 压制英雄=> 152 [relation_desc] => 王昭君昭君3] => Array ( [hero_id] => 189 [relation_type] => 压制英雄=> 153 [relation_desc] => 兰陵王陵王4] => Array ( [hero_id] => 189 [relation_type] => 被压制英雄=> 132 [relation_desc] => 机动性高的英雄不太容易被鬼谷子抓住5] => Array ( [hero_id] => 189 [relation_type] => 被压制英雄=> 173 [relation_desc] => 李元芳能侦测到鬼谷子的大概位置测到鬼谷子的大概位置
Code language: PHP (php)

官方 https://simplehtmldom.sourceforge.io/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注