2016-08-14 2 views
0

У меня есть этот код для очистки данных с веб-сайта.Нужна помощь по очистке 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]' 

Это становится все дивы, которые имеют класс, но я хочу, чтобы пропустить некоторые дивы, что я не хочу. Как мне это сделать?

Еще один вопрос, как я могу объединить $pk_row и $pk_row2, потому что $pk_row имеет имя и $pk_row2 имеет цены.

Я хочу, чтобы один массив имел эти значения внутри. name=> и price=>

ответ

0

Если не указать, какие элементы вы хотите пропустить я могу только отослать Вас к http://www.w3schools.com/xsl/xpath_syntax.asp, где вы можете найти то, что вам нужно.

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

Для объединения двух массивов так один используется для ключей и другой для значений, которые вы можете использовать array_combine($arrKeys, $arrValues) (http://php.net/manual/en/function.array-combine.php)

+0

«// ДИВ [@ класс =" имя-увеличенный "] ', если этот div должен быть пропущен, тогда это будет' // div [@class! =" name-extended "] '? –

+0

'// div [not (@ class = "name-extendedarged")]' – icaine