2011-04-10 4 views
3

저는 XPATH에 다소 익숙하며 대부분의 기본 사항을 이해하지만 특정 쿼리에 문제가 있습니다.특정 HTML img 태그의 src 값에 대한 XPATH의 도움이 필요합니다.

잡동사니 (Motley Fool) 페이지를 구문 분석하고 주식의 대문자 점수에 대한 이미지 원본을 반환하려고합니다. 당신이 페이지의 소스를 보면 :

예를 들어

http://caps.fool.com/Ticker/SLT.aspx 나는 단지 SRC = 가능하면 다음과 무엇을 원하는 http://g.foolcdn.com/art/ratings/stars/trans/5stars-trans-lg.png

의 소스를 원한다.

xpath = "//div[@class='subtle marginT']" 

이 그러나 반환 아무것도 : 나는 현재 함께 일하고

. 나는 그것이 많이 요구할지도 모른다는 것을 알고 있습니다. 그러나 응답을 원한다면,이 쿼리가 작동하도록하는 것뿐만 아니라 XCAP을 배우고 싶을 때 답을 빨리 추론 해 주시면 대단히 감사하겠습니다. 이것은 나를 위해 일한 당신의 URL을 기반으로

+0

는 어떻게 프로그래밍됩니다

이 속성의 단지 문자열 값 필요한 경우 사용 (위의 XPath 식은 하나의 속성 노드 선택됩니다 가정)? Javascript가 브라우저에서 실행 중입니까? 다른 것? – bmargulies

+0

@bmargulies 죄송합니다, C# 및 HTML 민첩성 팩을 사용하고 있습니다. – PFranchise

+0

좋은 질문입니다. +1. 원하는 특성을 정확히 선택하는 간단하고 쉬운 한 줄짜리 XPath 식에 대한 내 대답을 확인하십시오. :) –

답변

6

:

var imageNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']/tbody/tr/td/img"); 
string imageText = imageNode.Attributes["src"].Value; 

은 기본적으로 그냥 다음 아래로 당신이 원하는 곳으로 트리를 걸어, ID를 가지고있는 가장 가까운 요소를 잡아.

는 다른 방법이 너무 일을하고 (당신이 정말로 테이블과 긴 자체의 DOM 구조에 대해 상관하지 않기 때문에 단지 하나의 이미지가로) 조금 청소기를 보이는 것입니다 :

var statsNode = doc.DocumentNode.SelectSingleNode("//table[@id='tickerStats']"); 
var imageNode = statsNode.SelectSingleNode(".//img"); 
string imageText = imageNode.Attributes["src"].Value; 
+0

다시 한번 감사드립니다! 짧은 시간에 xcap에서 머리를 감싸려고 시도하는 것은 다소 어려웠지만, 당신의 도움으로 올바른 방향으로 나아갈 수 있었고 크게 감사했습니다. – PFranchise

1

이 있습니다를 무료 툴은 여기 http://www.bubasoft.net/ XPath 빌더라고 불리며 XPath 관련 정보를 빨리 찾아 낼 수 있습니다.

+0

고맙습니다. 나는 그 사이트를 체크하고 다음 시간에 xpaths로 붙어있을 때 도움이 될지 알아 보겠다. – PFranchise

2

사용 :이 인 tbody의 자식 인 tr의 자식 인 td의 자식 img라는 이름의 모든 요소의 src라는 이름의 속성을 선택

//table[@id='tickerStats']/tbody/tr/td/img/@src 

자식이 table 인 문서에서 id 속성에 값 'tickerStats'가 있습니다.

string(//table[@id='tickerStats']/tbody/tr/td/img/@src) 
+0

자세한 답변을 주셔서 대단히 감사드립니다. 그걸 쓸 시간을 내 주셔서 감사합니다. – PFranchise

+0

@P 프랜차이즈 : 환영합니다. –

관련 문제