Как отобразить результаты веб-поиска со ссылками в C#? - PullRequest
0 голосов
/ 05 января 2020

Я хочу создать программу WPF, которая могла бы отображать результаты веб-поиска с активными ссылками на сайты, такие как Bing или DuckDuck Go. Я использую безголовый браузер Phantom JS для очистки данных из Qwant Lite результатов поиска.

Теперь приложение отображает только несколько результатов без ссылок на какой-либо сайт. , Я заметил, что программа отображает заголовки всех найденных сайтов, когда у них нет свойства NavigateUri . Однако они не являются гиперссылками.

Как отобразить все результаты, найденные Phantom JS со ссылками? Было бы неплохо показать ссылки на сайты или видеоролики, показывающие, как можно решить эту проблему.

bool search_end = false, page_se = false;
byte page = 0; // Search result's index

while (!search_end)
{
    try
    {
        while (!page_se)
        {
            try
            {
                Run title = new Run(phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("title")).Text); // Site's title
                Hyperlink hyperlink = new Hyperlink(title)
                {
                    NavigateUri = new Uri(phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("url")).Text)
                };
                Results.Inlines.Add(hyperlink); // Results - TextBlock's name | Adding website's title connected to hyperlink
                Results.Text += Environment.NewLine;
                Results.Text += phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("url")).Text + Environment.NewLine; // Site's URL
                Results.Text += phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("desc")).Text + Environment.NewLine + Environment.NewLine; // Site's description
                ++page; // Scraping data from next result
            }
            catch
            {
                page_se = true; // Stop scraping data from current page
            }
        }
        phantomDriver.FindElement(By.ClassName("next")).Click(); // Navigate to next page of search results
        page = 0;
    }
    catch // Closing PhantomJS
    {
        phantomDriver.Quit();
        search_end = true;
    }
}
...