I want to parse some products link, name and price. Here\'s my code: Having some trouble parsing, because I don\'t know how to get product link\'s and name\'s.Price is ok, I get
Please Inspect carefully the source code you're working on, then, based on that, you can retrive the nodes you want... It's normal that the compatible code with another website wont work here, since the two websites dont have the same source code/structure !
Lets proceed, again, step by step...
$phones = $html->find('div#productList span.product');
will give you all "phones containers", or what I called "blocks"... Each block has the following structure:
999,00 Lt
1.499,00 Lt *
Sony Xperia acro S
3G: HSDPA 14.4 Mbps, HSUPA 5.76 Mbps
GPS: Taip
NFC: Taip
Operacinė sistema: Android OS
The anchor containing the product link an is included within , and it is the only anchor in there, so, to retrieve it simply use
$linkas = $phone->find('p.productPhoto a', 0)->href;
(then complete it since it's only the relative link)
The product name is located into tag, again, we use simply
$pavadinimas = $phone->find('h3 a', 0)->plaintext;
to retrieve it
The price is included within Hoever, not all phones have their price displayed, therefore, we must check if the price has been retrieved correctly or not And finally, the HTML code containing the next link is the following: So, we are interested in So, if we make add these modifications to your original code, we'll get: Working DEMO$kaina = $phone->find('div[class=price] strong', 0)->plaintext
to retrieve it
tag, wich can be retrieved using
$html->find('div#ListFootPannel a[rel="next"]', 0)
$url = "http://pigu.lt/foto_gsm_mp3/mobilieji_telefonai/";
// Start from the main page
$nextLink = $url;
// Loop on each next Link as long as it exsists
while ($nextLink) {
echo "nextLink: $nextLink
";
//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a url
$html->load_file($nextLink);
////////////////////////////////////////////////
/// Get phone blocks and extract useful info ///
////////////////////////////////////////////////
$phones = $html->find('div#productList span.product');
foreach($phones as $phone) {
// Get the link
$linkas = "http://pigu.lt" . $phone->find('p.productPhoto a', 0)->href;
// Get the name
$pavadinimas = $phone->find('h3 a', 0)->plaintext;
// If price not found, find() returns FALSE, then return 000
if ( $tempPrice = $phone->find('div[class=price] strong', 0) ) {
// Get the name price and extract the useful part using regex
$kaina = $tempPrice->plaintext;
// This captures the integer part of decimal numbers: In "123,45" will capture "123"... Use @([\d,]+),?@ to capture the decimal part too
preg_match('@(\d+),?@', $kaina, $matches);
$kaina = $matches[1];
}
else
$kaina = "000";
echo $pavadinimas, " #----# ", $kaina, " #----# ", $linkas, "
";
}
////////////////////////////////////////////////
////////////////////////////////////////////////
// Extract the next link, if not found return NULL
$nextLink = ( ($temp = $html->find('div#ListFootPannel a[rel="next"]', 0)) ? "http://pigu.lt".$temp->href : NULL );
// Clear DOM object
$html->clear();
unset($html);
echo "
";
}