Я пытаюсь понять, как соскрести расшифрованные номера телефонов с сайта желтой страницы с помощью PHP & Curl.
Вот пример URL:
https://www.gelbeseiten.de/test
Обычно вы можете сделать это технически с чем-то вроде этого:
$ch = curl_init();
$page = curl_exec($ch);
if(preg_match('#example html code (.*) example html code#', $page, $match))
$result = $match[1];
echo $result;
Но на указанной выше странице вы не можете напрямую найти номер телефона в HTML-коде. Должен быть способ получить номер телефона.
Можете ли вы помочь мне?
С наилучшими пожеланиями,
Дженнифер
Не используйте регулярные выражения для анализа HTML, использовать HTML-парсер, как DOMDocument, т.е .:
$html = file_get_contents("https://www.gelbeseiten.de/test");
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//span[contains(@class,"nummer")]') as $item) {
print trim($item->textContent);
}
Выход:
(0211) 4 08 05(0211) 4 08 05(0211) 4 08 05(0211) 4 08 05(0231) 9 79 76(0231)...
Как предлагается в комментарии — использование выражения XPath позволяет получить телефонные номера по желанию.
$url='https://www.gelbeseiten.de/test';
$dom=new DOMDocument;
$dom->loadHTMLFile( $url );
$xp=new DOMXpath( $dom );
$query='//li[@class="phone"]';
$col=$xp->query($query);
if( $col ){
foreach( $col as $node )echo $node->nodeValue . "<br />";
}
$dom = $xp = $col = null;