HTML 태그 Xpath와 HtmlAgility 사이의 가치 가져 오기

c# html html-agility-pack html-parsing xpath

문제

그래서 멀리 특정 웹 사이트에 대한 HTML 태그 사이의 텍스트를 검색하려고합니다 ....

예를 들어 이러한 span 태그 사이의 텍스트를 추출해야하는 경우 어떻게해야할까요? "객체 참조가 객체 참조로 설정되지 않았습니다."라는 오류 메시지가 HTML에 표시됩니다.

이 부분 이전에는 HTML 코드도 있습니다. 그게 차이를 만들어야할지 모르겠다.

<div class="thumbnail-details">
<ul>
    <li> … </li>
    <li class="product-title">
        <span class="thumbnail-details-grey">The Blaster Portable Wireless Speaker in Black</span>
    </li>
    <li> … </li>
</ul>
</div>

지금까지 C # 코드는

<div class="thumbnail-details">
<ul>
    <li> … </li>
    <li class="product-title">
        <span class="thumbnail-details-grey">The Blaster Portable Wireless Speaker in Black</span>
    </li>
    <li> … </li>
</ul>
</div>

여기에 도움을 얻을 수 있을까요? "Blaster Portable Wireless Speaker in Black"을 추출하고 싶습니다. 모든 도움이 도움이 될 것입니다, 미리 감사드립니다.

수락 된 답변

코드는 정상적으로 작동하지만 제대로 작동하려면 올바른 페이지를로드해야합니다. 로드중인 페이지는 브라우저에 표시되는 결과를로드하기 위해 ajax 요청을 사용합니다.

따라서 현재 사용중인 URL 대신 다음을 사용해야합니다.

HtmlDocument htmlDoc = hw.Load(@"http://www.karmaloop.com/Browse?Pgroup=1&ajax=true&version=2");

그러면 코드가 작동합니다. 나는이 요청이 함께 모이는 장소를 아직도 찾고있다 ...

그러나 쿼리는 쉽게 추측 할 수 있습니다. 예를 들어, http://www.karmaloop.com/Browse.htm#Pdept=11&PageSize=30&Pgroup=1 URL을 요청하십시오 http://www.karmaloop.com/Browse.htm#Pdept=11&PageSize=30&Pgroup=1 http://www.karmaloop.com/Browse?Pdept=11&PageSize=30&Pgroup=1&ajax=true&version=2 . 그래서 당신이해야 할 일은 당신의 URL을 사용하고 # 시작으로 새로운 URL을 만드는 것입니다.


인기 답변

CsQuery ( https://www.nuget.org/packages/CsQuery/1.3.4 )를 사용하는 것이 좋습니다. 다음과 같이 간단합니다.

var doc = CQ.CreateFromUrl(@"http://www.karmaloop.com/Browse.htm");
var nodes = doc.Find("span.thumbnail-details-grey");
foreach(var node in nodes)
    Console.WriteLine(node.InnerText);



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