2012-09-17 3 views
0

하나의 div의 내용이로드되지 않은 것으로 나타 났을 때 H & M (학습 목적으로)에서 페이지를로드하려고했지만 브라우저에서 페이지를 저장하면 div가 올바르게 저장되었습니다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까?
사업부 (그리고 가장 중요한, IST의 내용) 내가 찾고은 다음과 같습니다
몸>사업부 주요>사업부 내용>사업부relatedInformationContainer
(컨텐츠가의 많은 내부 : DIV 샘외부 div를 PHP로로드 중

<?php 
$url = "http://www.hm.com/gb/product/05427"; 
libxml_use_internal_errors(true); 
$html = file_get_contents($url); 
$dom = new DomDocument(); 
$dom->loadHTML($html); 
$xp = new domxpath($dom); 

$contentDivs = $xp->query('//div[@id="content"]')->item(0); 
$numContentDivs = $xp->evaluate('count(div)', $contentDivs); 
// echo $numContentDivs; // output:3 (correct) 
$relatedDiv = $xp->query('//div[@id="content"]/div[2]')->item(0)->getAttribute("id"); 
echo $relatedDiv; // output:relatedInformationContainer (correct) 
$relatedDivContent = $xp->query('//div[@id="content"]/div[2]')->item(0); 
$numRelatedDivContent = $xp->evaluate('count(div)', $relatedDivContent); 
echo $numRelatedDivContent; // output:0 (incorrect!!! it should output 1) 
?> 

I보다 단순한 방법을 사용했을 relatedInformation는> 등)
이 제가 사용되는 코드 e 결과 :

<?php 
$url = "http://www.hm.com/gb/product/05427"; 
$doc = new DOMDocument(); 
$load = @$doc->loadHTMLFile($url); 
echo $doc->saveHTML(); 
?> 

왜 이런 일이 일어 났는지 설명 할 수 있으면 해결책을 찾았을지 모르겠다. 감사합니다. .

답변

1

DIV는 Javascript에서로드됩니다. Javascript 호출이 무엇인지 검색하고 PHP에서이를 복제해야합니다. 방화범이 끌려와 파이어 폭스를 사용

, 나는 페이지가

의 모든 내용 (나는 그것이 DIV를 대체 추측)로 DIV 을 반환
http://www.hm.com/gb/product/05427/05427-A/related 

에 대한 호출을 발행 것을 알 수있다. 그것을 잡아야 할 것입니다.

또한 일부 서버는 누구를 대신하여 무엇을 요구하는지 확인합니다. 따라서 위의 쿼리는 HTTP_REFERER 필드가 올바른 User-Agent 및 세션 쿠키 등으로 올바른 원래 페이지로 설정되지 않은 경우 작동하지 않을 수 있습니다 (일반적으로 여기에 해당하지 않는 것처럼 보입니다 - 내가 틀릴 수도 있음).).

+0

감사합니다. Iserni! 나는 그 세부 사항을 정말로 놓쳤다. 나는 같은 구조를 사용하여 그 요청을 시뮬레이션 할 수 있다는 것을 발견했다 :'hm.com/gb/product/(product code)/(product code) - (variation)/related' 그리고 거기에서 retrive 내용은 DOMXpath 메소드를 사용합니다. 내가 방화범에게 더 많이 관심을 보인 것처럼 보입니다. 감사 –

관련 문제