使用Simple Html Dom从div中提取粗体文本

时间:2017-02-20 05:30:40

标签: php html curl simple-html-dom

在一个脚本项目上工作,花了最后4个小时研究我所能做的一切 - 我的头脑在这个问题上不再起作用,真的需要你的帮助。

所以我有一个PHP cURL脚本来抓取网站上的数据。我可以抓住有ID的div和所有这些。但是我如何从DIV中获取没有任何ID /类/或任何特定内容的特定文本,除了它是div中唯一的粗体项?

以下是网站上的HTML文字:

<div class="firststyle"><label for="calculator" class="class-coll-1">
                <p class="sr-only">Welcome to the calculator:</p> <b>What is one plus two?</b> </label></div>

我试图从这个HTML部分解析/提取的只是文字&#34; 什么是一加二?&#34;。 如何定义要选择的特定部分?

我目前唯一能做的就是使用以下脚本解析整个div:

$html = str_get_html($response);
$the_question = $html->find('div[class=firststyle]');

然而,这会得到所有文字,包括&#34;欢迎来到计算器&#34;标签我不需要的东西。

是否有可能以某种方式将解析后的数据保存到变量中,然后从那里使用不同的脚本从该变量中提取数据?

或者我也可以这样做:

使用此ID找到div - &gt;在其中找到粗体文字

或者也许:

查找带ID的div - &gt;取出文本&#34;欢迎来到计算器&#34;

2 个答案:

答案 0 :(得分:0)

如果你有来自网站的HTML,你可以使用DOMDocument类来解析它。

$html = file_get_contents('http://www.example.com');

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

DOMDocument类附带了很多方法。这些是您需要的getElementByIdgetElementsByTagName

这样的事情:

$html = '<div id="test"><b>I want to be found!</b></div><div id="poep"><b>Im not selected</b></div>';

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

$div = $dom->getElementById('test');
$text = $div->getElementsByTagName('b')->item(0)->nodeValue;

echo $text;

将输出:

I want to be found!

答案 1 :(得分:0)

echo $html->find('.firststyle b', 0)->innertext;
#=> What is one plus two?