2014-02-28 5 views
0

저는 PHP의 웹 크롤러/사이트 분석기에서 작업 중입니다. HTML 파일에서 일부 태그를 추출하고 일부 속성 (예 : 이미지 크기)을 계산해야합니다. DOM 파서를 사용하여 쉽게이 작업을 수행 할 수 있지만 html/DOM 트리 요소의 픽셀 좌표와 크기를 찾아야합니다 (div가 있고 어떤 영역을 다루고 어떤 좌표를 사용하는지 알아야한다고 가정 해 봅시다). 그것은 시작하고 if). 나에겐 문제가되지 않는 표준 화면 해상도를 정의 할 수 있지만, 서버 측 PHP 스크립트를 사용하여 (또는 필요한 경우 콘솔에서 또는 일부 Java 응용 프로그램을 호출하여) 픽셀 좌표를 자동으로 검색해야한다.PHP를 사용하여 HTML/DOM 요소의 픽셀 좌표를 가져옵니다.

내가 이해하는 것으로부터, 나는 PHP에서 헤드리스 브라우저가 필요하고 시뮬레이션/웹 페이지를 렌더링하고 필자는 내가 필요로하는 픽셀 좌표를 검색 할 수있다. 이를 위해 오픈 소스 솔루션을 추천 해 주시겠습니까? 일부 코드 스 니펫도 유용 할 것이므로 솔루션을 설치하지 않은 다음 픽셀 좌표를 제공하지 않음을 알 수 있습니다.

추신 : 나는 질문의 요점을 놓친 사람을 보았 기 때문에 서버 측에서 완벽하게 작동하려면이 솔루션이 필요하다는 것을 잘 설명하지 못했습니다. 크롤러를 사용한다고 가정하면 스크립트에 HTML 페이지를 제공합니다. 나는 브라우저에서 시작할 수 있었지만 콘솔에서도 (예 : 'php myScript.php') 실행할 수있었습니다.

+0

무엇에 대해 zombie.js? – Goot

+0

"헤드리스 브라우저"의 경우 [Selenium Webdriver] (http://docs.seleniumhq.org/)를 참조하십시오.하지만 리소스가 너무 비싸기 때문에 먼저 다른 솔루션을 사용해보십시오. –

+0

@Goot : 어떨까요? – andrei

답변

1

어쩌면 당신은 당신이 머리가없는 브라우저 잔인한 당신이 무엇을위한 것입니다

$html = file_get_contents($url); 

$doc = new DOMDocument(); 
@$doc->loadHTML($html); 

$tags = $doc->getElementsByTagName('element'); 

foreach ($tags as $tag) { 
    echo $tag->getAttribute('data'); <-- this will print the coordinates of each tag 
} 
+0

어떻게 자바 스크립트 안에 메타 데이터를 설정할 수 있습니까? 이것은 불완전한 대답입니다. – andrei

+0

첫 줄은 jquery (javascript) ... $ ("element"). 데이터 ("좌표", ""+ this.offset.top ","+ this.offset.left); –

+0

질문을 이해하지 못했거나 대답이 불완전합니다. html 페이지에서 jquery를 실행하려면 어떻게해야합니까? 브라우저에서 실행하지 않고 콘솔에서 실행중인 PHP 프로세스에서 다운로드 할 수 있습니까?자바 스크립트가 클라이언트 측에서 실행된다는 사실을 알고 콘솔에서 PHP를 실행할 때 자바 스크립트를 실행할 기본 클라이언트가 없으므로 헤드리스 브라우저가 필요한지 물어 보았습니다. 나는 누가 당신의 답변에 투표했는지 모르지만 그것은 나의 질문에 답하지 않고 전혀 도움이되지 않습니다. – andrei

0

PHP를 요청해야

$("element").data("coordinates",""+this.offset.top+","+this.offset.left); 

자바 스크립트

를 사용하여 태그 내부 메타 데이터의 일종으로 좌표를 설정할 수 있습니다 성취하려고 노력 중입니다. 쿠키를 사용하여 원하는 것을 저장하십시오.

자바 스크립트에서 X, Y 좌표, 스크롤 위치 등과 같은 정보를 얻을 때마다 고유 한 문자열 색인을 사용하여 쿠키를 만드는 PHP 스크립트로 보내면됩니다.

결국 PHP 또는 자바 스크립트 파일에서 직접 사용할 수있는 많은 양의 쿠키 데이터를 갖게되며, 그 시점에서 원하는 모든 작업을 수행 할 수 있습니다. 당신이 세션에서 그냥 가게 물건을 원하는 경우

예를 들어, 당신은 할 수 :

JQuery와 :

// save whatever you want from javascript 
// note: probably better to POST, since we're not getting anything really, just showing quick example 
$.get('save-attr.php?attr=xy_coord&value=300,550'); 

PHP :

// this will be the save-attr.php file 
session_start(); 
$_SESSION[$_GET['attr']] = $_GET['value']; 

// now any other script can get this value like so: 
$coordinates = $_SESSION['xy_coord']; 
// where $coordinates would now equal "300,550" 

단순이 계속를 PHP에서 액세스해야하는 모든 것을위한 패턴

+0

다시 한 번 질문의 요점을 놓친 것 같습니다. (X, Y) 좌표를 설정하거나 검색하는 방법은 무엇입니까? 그리고 모든 웹 사이트에서 작동해야합니다. – andrei