【问题标题】:Extract HTML data from HTML code in PHP [closed]从 PHP 中的 HTML 代码中提取 HTML 数据 [关闭]
【发布时间】:2017-12-12 07:15:30
【问题描述】:

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

我需要的数据在 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"   

我该怎么做?

感谢您的宝贵时间

【问题讨论】:

  • $html = '
    بنردهی ویکی گپ
    4 个成员
    加入群组 '; echo strip_tags($html);
  • 您需要使用curl()函数从URL中获取数据。
  • 请解释我是如何做到这一点的。我是 php 新手

标签: php web-scraping


【解决方案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

【讨论】:

  • 返回 null
  • 请看文档,在某些情况下它不是“textContent”,但有一个很好的功能可以在标签之间提取文本。
  • 那么 ->nodeValue 呢?
  • 什么都没有返回 null
  • 试试这个。它对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2011-12-18
相关资源
最近更新 更多