我正在尝试了解如何使用 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,使用像DOMDocument这样的html解析器,即:
$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;