2016-08-14 147 views
0

我有這段代碼從網站上刮取數據。需要幫助的PHP php

<?php 
$html = file_get_contents('http://www.alanum.com/search.aspx?kw=GTX%20980');    //get the html returned from the following url 

$pk_doc = new DOMDocument(); 

libxml_use_internal_errors(TRUE); //disable libxml errors 

if(!empty($html)){ //if any html is actually returned 

$pokemon_doc->loadHTML($html); 
libxml_clear_errors(); //remove errors for yucky html 

$pk_xpath = new DOMXPath($pk_doc); 

//get all the h2's with an id 
$pk_row = $pk_xpath->query('//h4[@name="list-productname"]'); 
$pk_row2 = $pk_xpath->query('//div[@class="price"]'); 

if($pk_row->length > 0){ 
    foreach($pk_row as $row){ 
     echo $row->nodeValue . "<br/>"; 
    } 
} 
if($pk_row2->length > 0){ 
    foreach($pk_row2 as $row2){ 
     echo $row2->nodeValue . "<br/>"; 
    } 
} 
} 
?> 

我是新來的網頁抓取所以我怎麼跳過例如,如果

'//div[@class]' 

這讓所有有類的div標籤,但我想跳過一些的div的我不要。我怎麼做?

還有一個問題是如何合併$pk_row$pk_row2因爲$pk_row有名字和$pk_row2具有價格。

我想要一個單一的數組裏面有這些值。 name=>price=>

回答

0

除非你指定你想跳過我只能向您推薦http://www.w3schools.com/xsl/xpath_syntax.asp,你可能會發現你所需要的元素。

編輯:'//div[not(@class="name-enlarged")]'

用於組合兩個陣列,以便一個用於鍵和另一個用於值可以使用array_combine($arrKeys, $arrValues)http://php.net/manual/en/function.array-combine.php

+0

「// DIV [@類=「名稱 - 放大「]'如果這個div必須被跳過,那麼它會是'// div [@class!=」name-expanded「]'? –

+0

'// div [not(@ class =「name-expanded」)]' – icaine