Cześć,
chcę stworzyć program Windows Presentation Foundation wyświetlający wyniki wyszukiwania internetowego z aktywnymi linkami, jak Google. Używam przeglądarki PhantomJS, która nie ma graficznego interfejsu. Pobiera 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:
Microsoft ułatwia przejście z Windows 7 na Windows 10
https://www.komputerswiat.pl/aktualnosci/programy/microsoft-ulatwia-przejscie-z-windows-7-na-windows-10/d756zxe
Windows 7 to system operacyjny, który wkrótce zostanie porzucony. Wsparcie zakończy się w styczniu 2020 roku. Microsoft zdaje sobie sprawę z tego, że pod kontrolą "siódemki" pracują ...
Zauważyłem, że są pokazywane wszystkie skopiowane przez PhantomJS 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;
}
}
P.S.: Będę wdzięczny za podanie linków do stron lub filmików przedstawiających rozwiązanie problemu.