2010-01-27 6 views
1

jQuery 또는 Extjs를 사용하여 특정 요소의 xpath 및 css 선택기를 얻는 가장 좋은 방법을 찾고 있습니다. 기본적으로 무작위 요소를 선택하고 DOM을 트래버스하고 고유 한 CSS 선택기 또는 xpath를 검색합니다. 이 작업을 이미 수행 할 수있는 함수가 있습니까? 아니면이를 수행 할 수있는 사용자 정의 함수가 있습니까?특정 요소의 xpath 및 css 선택기를 얻는 가장 좋은 방법

+0

아이디어는 생성 된 xpath 또는 css 선택기를 사용하여 요소를 다시 선택하기 위해 역방향 조회를 실행하는 것입니다. 웹 스크래핑 프로젝트 또는 이와 유사합니다. – Jalmarez

답변

3

"id"값을 확인하지 않고 거기에 값이 있으면 그냥 사용하십시오. 하나도 없으면 고유 한 임의의 "id"값을 생성하여 요소에주고 그 값을 사용합니다.

편집 : 클릭하면 어떤 요소에 대한 선택기를 구축하기위한 개념 증명 jQuery 해킹이 있습니다.

$('*').unbind('click.m5').bind('click.m5', function(ev) { 
    if (this != ev.target) return; 

    var cn = function(elem) { 
    var n = $(elem).parent().children().index(elem); 
    return elem.tagName + ':nth-child(' + n + ')'; 
    }; 
    var selector = cn(this); 
    $(this).parents().each(function() { 
    if (/BODY|HTML/.test(this.tagName)) 
     selector = this.tagName + '>' + selector; 
    else 
     selector = cn(this) + '>' + selector; 
    }); 
    console.log("Selector: " + selector); 
    $(selector).css('background-color', 'red'); 
}); 
+0

예 ...하지만 웹 스크랩의 경우 이는 재 방문을 위해 작동하지 않습니다. – Jalmarez

+0

사실 그렇습니다. 웹을 긁어서 웹을 훑어 본 사람이라면 통제 할 수없는 사이트가 어쨌든 일관성있는 콘텐츠에 의존하지 못할 수도 있습니다. 즉, 본문에서 두 번째 "h1"다음에 오는 첫 번째 "div"아래에있는 네 번째 div의 세 번째 자식 "span"은 지난 번 본 내용과 같을 수도 있고 아닐 수도 있습니다. – Pointy

+0

사실,하지만 변경 될 때까지 잠시 동안 작동해야하며 업데이트해야합니다. 나는 CSS 선택기가 더 잘할 것이라고 생각하고있다. – Jalmarez

0

주어진 요소에 대해 셀 수는 무한대입니다. 너는 그것을 위해 무엇을 필요로 하는가? XPather과 같은 Firefox 플러그인을 사용할 수 있습니까?

+0

은 생성 된 xpath 또는 css 선택기를 사용하여 요소를 다시 선택하기 위해 역방향 조회를 실행할 수 있어야합니다. – Jalmarez

+0

. 질문은 오히려; 요소가 있다면 단순히 참조를 저장하는 것이 좋을까요? 웹 스크래핑을하는 경우 XPather와 같은 도구를 사용할 수없는 이유는 무엇입니까? – troelskn

관련 문제