2016-08-14 152 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