PHP 从 HTML 类中获取文本

Posted

技术标签:

【中文标题】PHP 从 HTML 类中获取文本【英文标题】:PHP get text from HTML class 【发布时间】:2013-10-17 06:13:18 【问题描述】:

我正在做一个项目,我需要从 html 类中获取所有数据。

<div class="sprofile">
    <a href="http://www.cibap.nl/profile/2127/"><b>Jeroen Rinzema</b></a>
    <br />
    <i>Reclame en Media</i>
    <br />
    Klas RMM21C
    <div class="istatus offline">
    Offline
    </div>                
</div>

这是我需要从 HTML 页面获取的 HTML。但我不知道如何在 php 中选择 HTML 文档的这一部分。我需要使用的部分是: 杰罗恩·林泽马Klas RMM21C

如果您想查看完整的 HTML 文档,您可以这样做here。

到目前为止我尝试过的是:

$url = "http://www.cibap.nl/profile/$username";
$html = file_get_html($url);
foreach($html->find('div.sprofile') as $article)
    $item['name'] = $article->find('div.sprofile a b', 0)->plaintext;
    $item['klas'] = $article->find('div.sprofile', 0)->plaintext;

echo'done';

【问题讨论】:

但我也可以使用 DOM Parser 选择一个类(sprofile)吗? 您可以通过 jquery 将此部分发送到一个 php 文件,我认为这两个文件必须在同一个域中) 两个文件不在同一个域中这是另一台服务器上页面的 HTML @MeQube:是的,这很容易。使用 XPath 表达式。类似://*[contains(@class, 'sprofile')] -- 见this 答案。 好的,这很有用,所以我可以做的是选择类“个人资料”,而不是从 cibap.nl/profile/2127/"><b></a></b> 中获取内容“Jeroen Rinzema” 【参考方案1】:

使用 Symfony DomCrawler Component 和 CssSelector Component。它提供了一种非常自然的语法,并允许您根据它们的类来选择元素。

如果不需要 PHP,我可以建议使用nodejs(带或不带 jQuery)吗?

【讨论】:

最好的是 php,但如果 jQuery 是唯一的选择。没问题吗 Symfony 的问题是您选择文本本身,但在我的情况下,文本总是不同,所以我永远不知道 html 文件中的内容 @MeQube 您在示例中使用了可以与 CssSelector 组件匹配的 CSS 类。如果您要解析的 DOM 总是不同的,那么您将无法自动获得所需的输出。【参考方案2】:

您希望将 html 内容发送到 php 页面吗?为此,您可以将内容包装在隐藏的表单元素中并发布相同的内容。

如果您希望获取此页面本身的 html 内容,请使用 javascript dom 操作。你也可以通过这个链接http://***.com/questions/3808808/how-to-get-element-by-class-in-javascript

【讨论】:

【参考方案3】:

试试 PHP Simple HTML DOM Parser

http://simplehtmldom.sourceforge.net/

如果你在做这个客户端使用jQuery。

【讨论】:

以上是关于PHP 从 HTML 类中获取文本的主要内容,如果未能解决你的问题,请参考以下文章

从 <span 类中获取文本:使用 Beautifulsoup 和请求

使用 PHP 从网页元素中获取文本

Javascript - 从数组中查找所有类,从类中获取并返回内部文本

从 php 中的文本输入中获取 CRLF

使用 PHP Simple HTML DOM Parser 获取文本

PHP DOM获取nodevalue html? (不剥离标签)