문제

html 민첩성 팩을 사용하여 html 테이블을 구문 분석하고 싶습니다. 테이블에서 사전 정의 된 열 데이터 만 추출하려고합니다.

하지만 나는 구문 분석과 html 민첩성 팩을 처음 사용했지만 시도해 보았지만 필요에 따라 html 민첩성 팩을 사용하는 방법을 모르겠습니다.

아무도 모른다면 가능한 한 예를 들어주세요.

편집하다 :

우리가 결정한 컬럼 이름의 데이터만을 추출하고자하는 것처럼 html 테이블을 파싱 할 수 있습니까? 4 열 이름, 주소, phno와 마찬가지로 이름과 주소 데이터 만 추출하려고합니다.

수락 된 답변

여기에 토론 포럼에 그 예가 있습니다 . 아래로 스크롤하여 테이블 응답을 봅니다. 쉽게 찾을 수있는 더 나은 샘플을 제공하기를 바랍니다.

편집 : 먼저 찾아 당신이 가진 것 특정 열에서 데이터를 추출하려면 <th> 원하는 컬럼에 해당하고 자신의 인덱스를 기억 태그입니다. 그런 다음 동일한 색인에 대한 <td> 태그를 찾아야합니다. 컬럼의 인덱스를 알고 있다고 가정하면 다음과 같이 할 수 있습니다.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
foreach (var row in table.SelectNodes("//tr"))
{
    HtmlNode addressNode = row.SelectSingleNode("td[2]");
    //do something with address here
    HtmlNode phoneNode = row.SelectSingleNode("td[5]");
    // do something with phone here
}

Edit2 : 컬럼의 인덱스를 모른다면이 모든 것을 할 수 있습니다. 나는 이것을 시험하지 않았다.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("http://somewhere.com");
var tables = doc.DocumentNode.SelectNodes("//table");

foreach(var table in tables)
{
    int addressIndex = -1;
    int phoneIndex = -1;
    var headers = table.SelectNodes("//th");
    for (int headerIndex = 0; headerIndex < headers.Count(); headerIndex++)
    {
        if (headers[headerIndex].InnerText == "address")
        {
            addressIndex = headerIndex;
        }
        else if (headers[headerIndex].InnerText == "phone")
        {
            phoneIndex = headerIndex;
        }
    }

    if (addressIndex != -1 && phoneIndex != -1)
    {
        foreach (var row in table.SelectNodes("//tr"))
        {
            HtmlNode addressNode = row.SelectSingleNode("td[addressIndex]");
            //do something with address here
            HtmlNode phoneNode = row.SelectSingleNode("td[phoneIndex]");
            // do something with phone here
        }
    }
}


Related

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