我正在抓取一个电子商务网站,需要从产品中获取一些数据,如产品名称,价格等......
为此,我有:
...
// library includes...
$html = file_get_html($link);
foreach($html->find('.productBoxClass') as $element){
foreach($element->find('.productTitle') as $product) {
$product = $product->plaintext;
}
foreach($element->find('.price') as $price) {
$price = $price->outertext;
}
// and so on...
}
我想将这些数据保存在数据库中。所以,我想保存数组中的所有数据,以便在验证每个产品后,如果我必须插入或只是更新。我打算使用这些数据填充多维数组:
数组的每个位置都包含另一个包含有关一个产品的信息的数组...为了便于在...之后保存在数据库中
任何帮助?
答案 0 :(得分:0)
这似乎是一个异常的数据结构,或者你应该以不同的方式循环它。但如果它是一个异常的结构,产品和价格没有组合在一起,它们只是按相同的顺序列出,那么这应该有效:
$products = [];
$i = 0;
foreach($element->find('.productTitle') as $product) {
$products[$i++]['product'] = $product->plaintext;
}
$i = 0;
foreach($element->find('.price') as $price) {
$products[$i++]['price'] = $price->outertext;
}
注意$ i ++作为每个循环增加$ i的键。
如果产品和定价在一个元素中组合在一起,那么您应该循环使用该元素,并且不需要为产品和价格进行预测。
答案 1 :(得分:0)
请检查以下代码,让我知道您的想法......
<?php
// library includes...
$html = file_get_html($link);
$productArr = array();
foreach($html->find('.productBoxClass') as $element){
$tempArr = array('title' => '','price' => 0,'other' => ''); // declare temp array for stroing each product nodes
foreach($element->find('.productTitle') as $product) {
$tempArr['title'] = $product->plaintext; // To do check for empty text here
}
foreach($element->find('.price') as $price) {
$tempArr['price'] = $price->outertext; // To do validate the price
}
foreach($element->find('.other-features') as $price) {
$tempArr['other'] = $price->outertext; // To do validate the price
}
// and so on... with $tempArr['key']
// then assign
$productArr[] = $tempArr; // save temp array in global product array
}
// Product array
echo '<pre>';print_r($productArr);die;
答案 2 :(得分:0)
首先使用计数项:
...
// library includes...
$html = file_get_html($link);
// Array declaration
$products = array();
foreach($html->find('.productBoxClass') as $i => $element){
foreach($element->find('.productTitle') as $product) {
$products[$i]['name'] = $product->plaintext;
}
foreach($element->find('.price') as $price) {
$products[$i]['price'] = $price->outertext;
}
// and so on...
}
结果:
Array
(
[0] => Array
(
[name] => Product 1
[price] => 1.00
)
[1] => Array
(
[name] => Product 1
[price] => 1.00
),
...
)