Cześć,
chcę stworzyć program wyświetlający wyniki wyszukiwania internetowego z aktywnymi linkami, jak DuckDuckGo. Używam przeglądarki PhantomJS bez interfejsu. Pobieram dane z rezultatów wyszukiwarki Qwant Lite.
Teraz na okienku aplikacji wypisanych jest tylko kilka rezultatów (tytuły, adresy URL i opisy stron) bez odnośników. Podam przykład:
Zauważyłem, że są pokazywane wszystkie skopiowane z Qwant Lite tytuły bez właściwości PropertyUrl. Ta właściwość określa, do jakiej strony trafi użytkownik po kliknięciu lewym przyciskiem myszy w tytuł. Tytuły nie są jednak odnośnikami do jakiejkolwiek strony.
Jak wyświetlić wszystkie rezultaty wyszukiwarki z linkami?
bool search_end = false, page_se = false;
byte page = 0; // Numer rezultatu
while (!search_end)
{
try
{
while (!page_se)
{
try
{
Run title = new Run(phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("title")).Text); // Tytuł strony
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 - Nazwa elementu TextBlock | Dodawanie linku
Results.Text += Environment.NewLine;
Results.Text += phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("url")).Text + Environment.NewLine; // Dodawanie adresu URL
Results.Text += phantomDriver.FindElements(By.ClassName("result")).ElementAt(page).FindElement(By.ClassName("desc")).Text + Environment.NewLine + Environment.NewLine; // Dodawanie opisu
++page; // Pobieranie danych z następnego wyniku
}
catch
{
page_se = true; // Koniec kopiowania informacji z obecnej strony wyszukiwarki
}
}
phantomDriver.FindElement(By.ClassName("next")).Click(); // Przejście do następnej strony
page = 0;
}
catch // Zamknięcie przeglądarki
{
phantomDriver.Quit();
search_end = true;
}
}