我刚开始使用PHP,得到一个任务似乎有点困难。我需要从这个页面中提取价格表body/prijzen/bezorgen/1052716#prijzen
到目前为止,我已经完成了代码:
<?php
include('simple_html_dom.php');
$url = 'http://www.kieskeurig.nl/spiegelreflexcamera/nikon/d3200_body/prijzen/bezorgen/1052716#prijzen';
$html = file_get_html($url);
foreach($html->find('table[id="priceTable"]') as $data) {
foreach($data->find('img[width="150"]') as $d) {
echo $d-> alt. "<br/>";
}
}
foreach($html->find('div[class="il"]') as $d1) {
foreach($d1->find('a[rel="nofollow"]') as $d2) {
echo $d2-> innertext. "<br/>" ;
}
}
?>它给我的结果,但我想要的商店名称和相应的价格在同一排。它应该如下所示:
Digitalstreet € 332,00
Cameratop € 332,00但我得到的输出如下:
Digitalstreet
Cameratop
€ 332,00
€ 332,00有人能用这个指引我吗。
发布于 2014-05-15 10:03:50
我建议逐行抓取表行,然后找出每行的名称和价格。这样(如果缺少什么东西),您可以确定名称和价格是一致的。
<?php
include('simple_html_dom.php');
$url = 'http://www.kieskeurig.nl/spiegelreflexcamera/nikon/d3200_body/prijzen/bezorgen/1052716#prijzen';
$html = file_get_html($url);
foreach($html->find('table[id="priceTable"]') as $data) {
foreach($html->find('tr') as $rowdata) {
$name = 'unknown';
$price = '-';
foreach($rowdata->find('img[width="150"]') as $namedata) {
$name = $namedata->alt;
}
foreach($rowdata->find('div[class="il"]') as $d) {
foreach($d1->find('a[rel="nofollow"]') as $d2) {
$price = $d2->innertext;
}
}
echo $name.' '.$price.'<br/>';
}
}
?>当然,您可以将所有内容添加到数组中,而不是回显它,而且“默认值”也可以根据您的需要进行更改。
发布于 2014-05-15 09:36:57
我猜第一圈在价格上,第二圈在名字上。假设这两个列表总是大小相同的,那么您可以轻松地将信息存储在一个或多个数组中,并在以后循环它们。
<?php
include('simple_html_dom.php');
$url = 'http://www.kieskeurig.nl/spiegelreflexcamera/nikon/d3200_body/prijzen/bezorgen/1052716#prijzen';
$html = file_get_html($url);
$prices = array();
$names = array();
foreach($html->find('table[id="priceTable"]') as $data) {
foreach($data->find('img[width="150"]') as $d) {
$prices[] = $d->alt;
}
}
foreach($html->find('div[class="il"]') as $d1) {
foreach($d1->find('a[rel="nofollow"]') as $d2) {
$names[] = $d->alt;
}
}
foreach ($names as $key => $name)
{
echo "$name: " . $prices[$key];
}我不能测试这是否有效,但它应该会帮助你得到正确的想法。
发布于 2014-05-15 09:37:08
我不知道数组是什么样子。您可以做的是将结果添加到数组中,并循环任何一个数组。
例如:
foreach($html->find('table[id="priceTable"]') as $data) {
foreach($data->find('img[width="150"]') as $d){
$price[] = $d->alt;
}}
foreach($html->find('div[class="il"]') as $d1){
foreach($d1->find('a[rel="nofollow"]') as $d2){
$camName[] = $d2->innertext;
}
}
// now loop through the array
echo "<table>"
foreach($camname as $key=>$name){
echo "<tr><td>{{$name}}</td><td>{{$price[$key]}}</td></tr>";
}
echo "</table>";https://stackoverflow.com/questions/23674248
复制相似问题