从PHP中的HTML代码中提取HTML数据

时间:2017-12-12 07:15:30

标签: php web-scraping

我想从页面中提取一些数据。

我需要的数据是HTML标签之间的文字:

<div class="tgme_page_title">تست</div>    
<div class="tgme_page_extra">4 members</div>
<a class="tgme_action_button_new" href="tg://join?invite=GYJezj_NevMyTZP5KchgPA">
    Join Group
</a>   

我想要提取数据并存储在变量中,如下所示:

$data1 = "تست"  
$data2 = "4 members"   
$data3 = "Join Group"   

我该怎么做?

感谢您的时间

1 个答案:

答案 0 :(得分:1)

使用HTML DOM解析器。

使用类查找div并提取其值的代码示例,我没有尝试:

$html = '<div class="tgme_page_title">تست</div><div class="tgme_page_extra">4 members</div><a class="tgme_action_button_new" href="tg://join?invite=GYJezj_NevMyTZP5KchgPA">Join Group</a>';

$dom = new DOMDocument();
$dom->loadHTML($html);
$finder = new DomXPath($dom);

$classname = "tgme_page_title";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$data1 = $nodes{0}->nodeValue;

$classname = "tgme_page_extra";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$data2 = $nodes{0}->nodeValue;

$classname = "tgme_action_button_new";
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$data3 = $nodes{0}->nodeValue;

以下是文档:http://php.net/manual/en/book.dom.php