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

Using Simple Html Dom to extract bold text from a div

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

所以我有一个 PHP cURL 脚本可以从网站抓取数据。我可以抓取 div 的 ID 等等。但是我怎样才能从 DIV 中获取特定的文本,它没有任何 ID/class/or 除了它是 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 部分 parse/extract 只是文本“一加二是多少?”。 如何定义要选择的特定部分?

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

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

然而,这会获取所有文本,包括我不需要的 "Welcome to the calculator" 标签内容。

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

或者我可以做类似的事情:

使用此 ID 查找 div -> 在其中查找粗体文本

或者也许:

用ID找div->取出文字"Welcome to calculator"

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

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

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

DOMDocument class 附带了很多方法。这就是您需要的两个 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!
echo $html->find('.firststyle b', 0)->innertext;
#=> What is one plus two?