2017-04-26 2 views
1

PHP컬이있는 노란색 페이지 웹 사이트에서 디코딩 된 전화 번호를 다 긁는 방법을 이해하려고합니다. 일반적으로 https://www.gelbeseiten.de/testPHP & Curl을 사용하여 디코딩 된 정보 긁음

이 같은 것을 함께 할 기술적으로 할 수 있습니다 : HTML에 직접 전화 번호를 찾을 수 없습니다

$ch = curl_init(); 
$page = curl_exec($ch); 

if(preg_match('#example html code (.*) example html code#', $page, $match)) 
    $result = $match[1]; 
    echo $result; 

하지만 위에서 언급 한 페이지에서 다음

는 예를 들어 URL입니다 암호. 전화 번호를 알아낼 수있는 방법이 있어야합니다.

도와 주실 수 있습니까?

안부,

+1

'DOMDocument' 등을 사용하는 것이 훨씬 쉬울 수 있습니다'XPath' - 전화 번호를 cntaining 요소가 솜씨 클래스 ('phone'를) 할당 그래서 당신은 그들에 액세스하지 않고 직접 정규 표현식을 사용하려고 할 수 있습니다 – RamRaider

+0

@RamRaider 전화 번호가 어떻게 든 인코딩 된 후 HTML DOM에 추가됩니다. 그래서 OP가 묻는 것, 그래서 정규 표현식이나 DOMDocument를 사용하지 않는 것 같아요 ... – hassan

+0

[PHP를 사용한 웹 사이트 긁힘] (http : //stackoverflow.com/questions/26397335/website-scraping-using-php) – LuFFy

답변

0

Don't use regex to parse 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

감사합니다.하지만이 스크립트는 숫자의 마지막 두 자리를 가져 오지 않습니다. – user1219432

+0

이 웹 사이트는 자바 스크립트가 활성화 된 경우에만 전화 번호의 마지막 부분을 보여주는 보호 기능을 제공합니다. php에서는 그렇지 않습니다. www.seleniumhq.org/를 사용할 수도 있습니다. –

0

- 사용 XPath식이 전화 번호를 산출합니다. rs.

$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; 
+0

불행히도이 스크립트는 숫자의 마지막 두 자리를 가져 오지 않습니다. 이 아이디어를 어떻게 해결할 수 있습니까? – user1219432

관련 문제