使用 PHP 和 Curl 抓取解码信息

问题描述 投票:0回答:2

我正在尝试了解如何使用 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代码中找到电话号码。一定有办法获取电话号码。

你能帮我一下吗?

致以诚挚的问候,

詹妮弗

php web-scraping curl
2个回答
0
投票

不要使用正则表达式来解析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)...

0
投票

正如评论中所建议的 - 使用 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;
© www.soinside.com 2019 - 2024. All rights reserved.