I'm trying to get the items of a search result with DOMXPath. Here is an example with a search result with 4 result elements:
https://www.11880.com/suche/0521441422/deutschland
Now with the following code I get those for 4 elements, but I don't know how to get each item inside the elements (like name, street, etc.).
Can you help me with this?
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://www.11880.com/suche/0521441422/deutschland');
$page = curl_exec($ch);
$dom = new DOMDocument();
$dom->loadHTML($page);
$xpath = new DOMXPath($dom);
foreach($xpath->query('//li[@class="search-result-list-item"]') as $item)
{
echo trim($item->nodeValue).'<br>';
}
I guess you can use:
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://www.11880.com/suche/0521441422/deutschland');
$page = curl_exec($ch);
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($page);
$xpath = new DOMXPath($dom);
$results = [];
$results['name'] = $xpath->query('//h2[@itemprop="name"]');
$results['street-name'] = $xpath->query('//span[@class="street-address"]');
$results['postal-code'] = $xpath->query('//span[@class="postal-code"]');
$results['address-locality'] = $xpath->query('//span[@class="address-locality"]');
$results['quarter'] = $xpath->query('//span[@class="quarter"]');
for($x=0; $x < $results['name']->length;$x++)
{
print trim($results['name']->item($x)->textContent);
print trim($results['street-name']->item($x)->textContent);
print trim($results['postal-code']->item($x)->textContent);
print trim($results['address-locality']->item($x)->textContent);
print trim($results['quarter']->item($x)->textContent)."\n";
}
Output:
Brauer, Harald Dr.med. Hals- Nasen- OhrenarztHauptstr. 9233647Bielefeld(Brackwede)
Elies-Kramme, Sybille Dr.med. Fachärztin für HNO-HeilkundeHauptstr. 9233647Bielefeld(Brackwede)
Gemeinschaftspraxis HNO-Bielefeld-Süd ÜBAG Michael K.W. Stolle und Dr. Sybille Elies-KrammeHauptstr. 9233647Bielefeld(Brackwede)
Stolle, Michael K. W. Facharzt für HNO-HeilkundeHauptstr. 9233647Bielefeld(Brackwede)