HTML 민첩 팩 질문 (원본에서 문자열을 구문 분석하려고 시도 함)

c# html html-agility-pack html-parsing

문제

Agility 팩을 사용하여 다양한 페이지의 정보를 분석합니다. 나는 이것을 사용하는 것이 내가 필요로하는 것에 대해 과잉이라고 걱정하는 경우가있다. 어쨌든, 나는 시계추를 기반으로 한 회사의 이름을 얻기 위해 어리석은 바보로부터 페이지를 파싱하려고 시도하고있다. 비슷한 방법으로 주식 정보를 얻기 위해 여러 페이지를 파싱 할 것입니다.

구문 분석하려는 HTML은 다음과 같습니다.

<h1 class="subHead"> 
    Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>

또한 구문 분석하려는 페이지는 http://caps.fool.com/Ticker/MSFT.aspx입니다.

그래서, 제 질문은 Microsoft로부터 html을 간단하게 얻는 방법이며, 민첩성 팩을 사용하여이 같은 작업을 수행해야합니까?

편집 : 현재 코드

<h1 class="subHead"> 
    Microsoft Corp <span>(NASDAQ:MSFT)</span>
</h1>

수락 된 답변

이렇게하면 Microsoft의 샘플 HTML에 대한 모든 주식 이름 목록을 얻을 수 있습니다.

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");

var nodes = doc.DocumentNode.SelectNodes("//h1[@class='subHead']");
foreach (var node in nodes)
{
    string text = node.FirstChild.InnerText; //output: "Microsoft Corp"
    string textAll = node.InnerText; //output: "Microsoft Corp (NASDAQ:MSFT)"
}

업데이트 된 질문을 기반으로 수정 - 귀하에게 도움이 될 것입니다.

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");

var nodes = doc.DocumentNode.SelectNodes("//h1[@class='subHead']");
foreach (var node in nodes)
{
    string text = node.FirstChild.InnerText; //output: "Microsoft Corp"
    string textAll = node.InnerText; //output: "Microsoft Corp (NASDAQ:MSFT)"
}

인기 답변

xpath 표현식을 사용하여 요소를 선택한 다음 텍스트를 가져옵니다.

 foreach (var element in doc.DocumentNode.SelectNodes("//h1[@clsss='subHead']/span"))
 {
    Console.WriteLine (element.InnerText);
 } 



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