반응형
HTML에서 원하는 값을 가져오고 싶을때, 보통 class로 지정된 CSS기준으로 가져올 수 있다.
만약 아래와 같이 Github의 특정 문자열을 가져오고 싶다면, 브라우저의 개발자 도구(F12키) 열어서, Elements 에서 해당하는 스타일을 검색한다. 그리고 아래 그림처럼 왼쪽 말풍선에 나온 내용 참고하여, CSS 구문을 포함해서 SelectNodes 값을 지정해주면 된다.
위 div아래와 같이 코드를 작성해서 가져올 수 있다.
using HtmlAgilityPack;
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace console_html
{
class Program
{
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
var content = await client.GetStringAsync("https://github.com/samuelclay/NewsBlur/commits/master/ansible");
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(content);
var select_nodes = htmlDoc.DocumentNode.SelectNodes("//div[@class='file-navigation']");
foreach (var select_item in select_nodes)
{
Console.WriteLine(select_item.InnerText);
}
}
}
}
SelectNodes를 이용할 때 복잡한 class는 인식이 되지 않는다. 정확히 확인할 필요는 있지만, class를 나누어주는 단위중에 시작 기준 값으로 가져올 수 있기 때문으로 판단된다.
따라서 만약 정확한 class를 찾아주지 못하는 경우에는 html 요소인 tr, td, li과 같은 표준 요소들을 이용해서 값을 가지고 온 후에 처리하는 방식을 추천한다.
var select_nodes = htmlDoc.DocumentNode.SelectNodes("//li");
반응형
'.Net' 카테고리의 다른 글
C#/.NET - 프로젝트 생성과 빌드하기 + 디버깅 (0) | 2022.06.11 |
---|---|
C#/.NET - HTTP Keep-alive 사용하기 (0) | 2022.04.14 |
.Net - naver, daum, google,kakao SMTP 메일 설정 및 보내기 Implicit SSL 포함 (0) | 2022.03.25 |
WxTCmd - Windows 10 Timeline Artifact Tool 한글 깨짐 해결 (0) | 2021.03.04 |
텍스트 - 콘솔 글씨 꾸미기 (0) | 2021.02.10 |