C#

[C#] Selenium을 이용한 실시간 검색어 크롤링하기(2)

데브워니 2022. 11. 14. 15:32

실시간 검색어 사이트를 크롤링한 결과를 버튼안에 넣어, windows Form에 띄워보고자한다.

 

List를 이용하여 10개의 버튼에 1순위부터 10순위까지의 결과 값을 추가해준다.

foreach문에서 List(0)번째 부터 검색어 순위 값과 매칭되도록 하였다.

public Form1()
{
    InitializeComponent();

    try
    {
        _driverService = ChromeDriverService.CreateDefaultService();
        _driverService.HideCommandPromptWindow = true;

        _options = new ChromeOptions();
        _options.AddArgument("disable-gpu");

        group.Add(button2);//list(0)부터 시작
        group.Add(button3);
        group.Add(button4);
        group.Add(button5);
        group.Add(button6);
        group.Add(button7);
        group.Add(button8);
        group.Add(button9);
        group.Add(button10);
        group.Add(button11);//list(9)
    }
    catch (Exception exc)
    {
        Trace.WriteLine(exc.Message);
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        _driver = new ChromeDriver(_driverService, _options);

        _driver.Navigate().GoToUrl("https://signal.bz/");


        var ranktime = _driver.FindElement(By.XPath("//*[@id='app']/div/main/div/section/div/section/section[1]/div[1]/div[1]/span")).Text;
        Console.WriteLine("ranktime:" + ranktime);

        var ranks = _driver.FindElements(By.ClassName("rank-layer"));

        int i = 0;

        foreach (var rank in ranks)
        {
            var num = rank.FindElement(By.ClassName("rank-num")).Text;
            var search = rank.FindElement(By.ClassName("rank-text")).Text;
            group.ElementAt(i).Text = search.ToString();//ElementAt - list0부터 매칭
            i++;
            Console.WriteLine(num + "." + search);
        }
    }

    catch (Exception exc)
    {
        Trace.WriteLine(exc.Message);
    }
}

 

결과

검색어 1순위부터 10순위까지의 결과가 버튼안에 들어간 것을 확인할 수 있다.