需要有关抓取php

时间:2016-08-14 04:59:07

标签: php web-scraping

我有这个代码来从网站上抓取数据。

<?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=>

1 个答案:

答案 0 :(得分: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