728x90
반응형
LIST

이 문서에서는 C# 언어를 사용하여 네이버 뉴스를 크롤링하는 방법을 상세히 설명합니다. 크롤링을 하기 위해 필요한 라이브러리 두 가지와 코드의 구현 방법에 대해서 자세하게 알아보겠습니다.

필요한 라이브러리

  1. HtmlAgilityPack : HTML 문서를 파싱하기 위한 라이브러리입니다. 이 라이브러리를 사용하면 HTML 문서에서 필요한 정보를 쉽게 추출할 수 있습니다.
  2. System.Net.Http : Http 요청을 보내기 위한 라이브러리입니다. 이 라이브러리를 사용하면 Http 요청을 쉽게 보낼 수 있습니다.

코드 구현

using HtmlAgilityPack;
using System;
using System.Net.Http;

class Program
{
    static void Main(string[] args)
    {
        HttpClient client = new HttpClient();
        string url = "<https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=100>";

        HttpResponseMessage response = client.GetAsync(url).Result;
        HttpContent content = response.Content;
        string result = content.ReadAsStringAsync().Result;

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(result);

        HtmlNodeCollection headlines = doc.DocumentNode.SelectNodes("//div[@class='cluster_group _cluster_content']//a[@class='_sp_each_title']");

        foreach (HtmlNode headline in headlines)
        {
            Console.WriteLine(headline.InnerText);
        }
    }
}

위 코드는 C# 언어를 사용하여 네이버 뉴스 메인 페이지의 HTML 코드를 가져오고, HtmlAgilityPack 라이브러리를 사용하여 HTML 코드에서 헤드라인 뉴스를 추출하는 예제입니다. 코드를 실행하면 콘솔에 헤드라인 뉴스의 제목이 출력됩니다. 이 코드는 네이버 뉴스 뿐만 아니라 다른 웹페이지에서도 사용할 수 있습니다. 예를 들어, 네이버 뉴스 대신 다음 뉴스나 구글 뉴스에서도 사용할 수 있습니다.

참고 자료

728x90
반응형
LIST
728x90
반응형
LIST

소개

텔레그램 봇을 이용하면 채팅방에 메시지를 보내거나 봇을 이용해 다양한 서비스를 이용할 수 있습니다. 이번에는 C# 코드로 만든 텔레그램 봇을 이용하여 네이버 뉴스 포스팅을 해보는 방법을 알아보겠습니다.

텔레그램 봇 만들기

먼저, 텔레그램 봇을 만들어야 합니다. 텔레그램 봇을 만드는 방법은 간단합니다. 먼저, 텔레그램 메신저에서 @BotFather를 검색하고 봇을 생성합니다. 봇 생성 후에는 봇의 API Token을 받을 수 있습니다. 이 API Token을 이용하여 C# 코드에서 봇에게 명령을 보낼 수 있습니다.

TelegramBotClient botClient = new TelegramBotClient("API Token");

뉴스 포스팅하기

뉴스를 포스팅하기 위해서는 뉴스 정보를 가져와야 합니다. 이를 위해 RSS 피드를 이용할 수 있습니다. 네이버 뉴스의 RSS 피드를 이용하면 최신 뉴스를 가져올 수 있습니다. C#에서는 SyndicationFeed 클래스를 이용하여 RSS 피드를 가져올 수 있습니다. 가져온 뉴스 정보를 텔레그램 봇에게 보내기 위해서는 Telegram.Bot 라이브러리를 이용하면 됩니다. 이 라이브러리를 이용하면 봇에게 메시지를 보내거나 사진, 동영상 등을 전송할 수 있습니다.

먼저, 뉴스 정보를 가져오는 코드를 작성합니다. 가져올 RSS 피드 URL을 지정하고, SyndicationFeed 클래스의 Load 메서드를 이용하여 피드를 가져옵니다. 가져온 피드에서 필요한 정보를 추출합니다. 이번 예제에서는 뉴스 제목, 링크, 요약 정보를 추출합니다. 추출한 정보를 이용하여 메시지를 만들고, Telegram.Bot 라이브러리의 SendMessageAsync 메서드를 이용하여 메시지를 전송합니다.

string url = "<https://news.naver.com/main/rss2.nhn?mid=shm&sid1=100>";
using (XmlReader reader = XmlReader.Create(url))
{
    SyndicationFeed feed = SyndicationFeed.Load(reader);
    foreach (SyndicationItem item in feed.Items)
    {
        string title = item.Title.Text;
        string summary = item.Summary.Text;
        string link = item.Links[0].Uri.ToString();

        string message = $"[{title}]({link})\\\\n{summary}";
        await botClient.SendTextMessageAsync(chatId, message, ParseMode.Markdown);
    }
}

위 코드에서는 RSS 피드를 가져오기 위해 XmlReader 클래스를 이용하고, 가져온 피드에서 뉴스 제목, 링크, 요약 정보를 추출합니다. 이후 Markdown 형식으로 메시지를 만들어서 Telegram.Bot 라이브러리의 SendMessageAsync 메서드를 이용하여 메시지를 전송합니다.

뉴스 포스팅 주기 설정하기

뉴스를 일정한 주기로 포스팅하려면, 타이머를 이용하여 주기적으로 뉴스를 가져와서 포스팅하면 됩니다. 타이머를 이용하기 위해서는 Timer 클래스를 이용하면 됩니다. Timer 클래스를 이용하여 일정 시간마다 특정 작업을 수행할 수 있습니다.

Timer timer = new Timer(60000); // 1분마다
timer.Elapsed += async (sender, e) =>
{
    // 뉴스 포스팅 코드
};
timer.Start();

위 코드에서는 Timer 클래스를 이용하여 1분마다 뉴스를 가져와서 포스팅하는 코드를 실행합니다.

결론

C# 코드로 만든 텔레그램 봇을 이용하면 다양한 서비스를 제공할 수 있습니다. 이번에는 네이버 뉴스 포스팅을 예시로 들어봤지만, 이외에도 다양한 기능을 추가할 수 있습니다. 텔레그램 봇 개발에 관심이 있다면, C#을 이용해 보는 것을 추천합니다.

728x90
반응형
LIST

'IT개발/정보 > C#' 카테고리의 다른 글

네이버 뉴스 크롤링  (0) 2023.03.04
C# 코드로 텔레그램 봇 만들기  (0) 2023.03.04
728x90
반응형
LIST

텔레그램 봇은 C#을 사용하여 만들 수 있습니다. 먼저, 텔레그램 봇 API를 사용하기 위해 NuGet에서 'Telegram.Bot' 패키지를 설치해야 합니다.

다음으로, Telegram.Bot 클래스의 인스턴스를 만들고, 봇의 토큰을 사용하여 봇을 시작할 수 있습니다.

using Telegram.Bot;

static async Task Main(string[] args)
{
    var botClient = new TelegramBotClient("your_api_token");

    var me = await botClient.GetMeAsync();
    Console.WriteLine($"Hello, my name is {me.FirstName}");
}

이제 봇이 작동하도록 만들었으므로, 원하는 기능을 추가할 수 있습니다. 예를 들어, 사용자가 '/start' 명령을 입력하면 인사말을 보내는 기능을 추가해보겠습니다.

botClient.OnMessage += async (sender, args) =>
{
    if (args.Message.Text == "/start")
    {
        await botClient.SendTextMessageAsync(
            chatId: args.Message.Chat.Id,
            text: $"Hello {args.Message.Chat.FirstName}!"
        );
    }
};

이제 '/start' 명령을 입력하면 봇이 메시지를 보내는 것을 볼 수 있습니다. 이와 같이, 더 많은 기능을 추가하여 봇을 더욱 유용하게 만들 수 있습니다.

728x90
반응형
LIST

'IT개발/정보 > C#' 카테고리의 다른 글

네이버 뉴스 크롤링  (0) 2023.03.04
텔레그램 봇으로 네이버 뉴스 포스팅 하기  (0) 2023.03.04

+ Recent posts