我有这个代码从一个网站抓取数据。
<?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]'
这是获得所有有class的div,但我想跳过一些我不想要的div。我怎么做呢?
还有一个问题是我如何将$pk_row
和$pk_row2
组合起来,因为$pk_row
有名称,$pk_row2
有价格。
我想要一个数组里面有这些值。name=>
和price=>
除非您指定要跳过哪些元素,否则我只能将您推荐到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)