2013-04-30 342 views
0

基本上我使用php file_get_contents()URL獲取內容。使用php獲取HTML標籤內容

獲得頁面的源代碼後,我從網頁源

<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia"> 
<a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300"> 
    <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" /> 
</a> 
<p class="title"> 
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300"> 
     Nokia 900 Lumia 
    </a> 
</p> 
<p class="price">Php 14,300</p> 
<p class="shop"> 
    <a href="/kimstore" title="kimstore">kimstore</a> 
</p> 
</div> 

所以,我有<div class="span2 box-product"和結束標記之間,以獲得這部分數據得到的數據。

,然後在那之後,我必須從中得到3個數據: 1.數據存儲 2.數據產品稱號 3.價格

我一直在使用regex嘗試,但沒有運氣這種方式。任何建議做什麼,技術使用?提前致謝。

+3

http://php.net/dom – DaveRandom 2013-04-30 08:59:15

+0

什麼你正在嘗試做的可能是:a)侵犯版權並二)錯誤的方法。 IANAL。 – PointedEars 2013-04-30 09:12:14

+0

可能重複的[如何解析和處理HTML/XML?](http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-xml) – Quentin 2013-04-30 09:21:16

回答

1

使用SimpleXML,您可以將屬性和DOM作爲PHP對象來訪問。從的file_get_contents結果傳遞給SimpleXML的,就像這樣:

$str = file_get_contents($url); 
$xml = simplexml_load_string($string); 

http://in1.php.net/manual/en/class.simplexmlelement.php http://in1.php.net/manual/en/simplexml.examples-basic.php

+0

我會試試這個,但告訴你,我沒有得到XML網址,但HTML – 2013-04-30 09:09:12

+0

只要HTML片段是有效的,它會起作用。 – Adil 2013-04-30 09:19:38

0

只用HTML代碼,您所提供的這種解決方案將工作:

<?php 
$html = <<<HTML 
<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia"> 
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300"> 
     <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" /> 
    </a> 
    <p class="title"> 
     <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300"> 
      Nokia 900 Lumia 
     </a> 
    </p> 
    <p class="price">Php 14,300</p> 
    <p class="shop"> 
     <a href="/kimstore" title="kimstore">kimstore</a> 
    </p> 
</div> 
HTML; 

$sxe  = new SimpleXMLElement($html); 
$attributes = $sxe->attributes(); 
$data_store = trim((string) $attributes['data-store']); 
$title  = trim((string) $sxe->p[0]->a); 
$price  = trim((string) $sxe->p[1]); 

echo "{$data_store}\n{$title}\n{$price}\n"; 
+0

但我必須從整個html中獲取數據。 – 2013-04-30 09:26:16

+0

此代碼片段應該足以讓您瞭解SimpleXML解析如何工作。只需加載整個HTML並導航到對象中,直到達到預期的塊。 – 2013-04-30 09:44:07