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 和请求
Javascript - 从数组中查找所有类,从类中获取并返回内部文本