2017-02-20 43 views
1

处理一个脚本项目,从字面上花了最后4个小时来研究我所能做的一切 - 我的脑袋在这个问题上不再起作用,真的需要你的帮助。使用简单的Html Dom从div中提取粗体文本

因此,我有一个从网站抓取数据的PHP cURL脚本。我可以抓住有ID和所有的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解析部分/提取仅仅是文本“什么是一加二?”。 如何定义要选择的特定部分?

我目前能做的唯一的事情就是解析与下面的脚本整个DIV:

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

然而,这得到所有这些,包括我不需要“欢迎使用计算器”标签的东西的文本。

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

或者,也许我可以这样做:

这个ID查找DIV - >找到粗体文字中它

或许:

查找DIV ID为 - >取出文本“欢迎使用计算器”

回答

0
echo $html->find('.firststyle b', 0)->innertext; 
#=> What is one plus two? 
+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!