XPath 표현식이 HtmlAgilityPack에서 작동하지 않음

c# html-agility-pack xpath

문제

나는 그것이 XPath에서 나의 noobness일지도 모른다라는 것을 알고있다. 그러나 나는 내가 충분히 탐내는 cuz를 확실하게 할 것을 부탁하자.

나는 웹 사이트를 가지고 있고 그것에서 뉴스 표제를 얻고 싶다 : www.farsnews.com (그것은 페르시아어이다)

파이어 폭스에서 FireBug 및 FireXpath 확장을 사용하고 손으로 나는 다음과 같은 제목과 일치하는 여러 Xpath 표현식을 추출하고 테스트합니다.

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

나는 또한 XPather 확장을 사용하여 이것들을 테스트했는데 그것들은 꽤 잘 작동하는 것처럼 보였습니다.하지만 테스트 할 때 ... SelectNodes는 null을 반환합니다!

어떤 단서 또는 힌트?

다음은 코드의 덩어리입니다.

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

감사.

인기 답변

나는 당신의 표현을 시험했다. 그리고 Dialecticus가 언급 한 바와 같이, 거기에는 없어야 할 엔딩 스페이스가 있습니다.

//div[@class='topnewsinfotitle ']/text()

'빈 시퀀스'를 반환, 평가 참조 : http://xmltools.dk/EQA-ACA6

//div[@class='topnewsinfotitle ']/text()

헤드 라인 목록을 반환합니다. http://xmltools.dk/EgA2APAj를 참조하십시오.

그러나이 클래스를 사용할 수있는 다른 클래스가 있으면 ( http://xmltools.dk/EwA8AJAW ) :

//div[@class='topnewsinfotitle ']/text()

(나는 그들이 제공 한 링크에서 인코딩 문제라고 생각하지만 의미와 모든 XPath 표현식에 대해 중요하지 않아야합니다. /text() 를 제거하여 텍스트 대신 노드를 가져올 수 있습니다)

그러나이 사이트를 소유하고 있다면 더 나은 성능을 발휘할 수있는 XML (아마 RSS 또는 ATOM) 또는 JSON을 헤드 라인에 제공해야하며, 가장 중요한 것은 더 방탄하는 것입니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.