HTML 민첩성 팩
-
19-09-2019 - |
문제
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
}
}
}
제휴하지 않습니다 StackOverflow