2017-02-20 171 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!