我有这个代码来从网站上抓取数据。
<?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 :(得分: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)