Parsowanie stron angular / react itp.

0

Witam,
jaki jest najlepszy sposób na dostanie się do kodu html renderowanego przez JavaScript? Na stackoverflow znalazłem propozycje użycia klasy WebBrowser lub Panel (z WebControls). Czy istnieją jakieś alternatywne rozwiązania? Projekt w wpf, dlatego naturalnym wyborem z dwóch powyższych byłaby klasa WebBrowser, ale jak tak się jej teraz przyglądam to nie widzę metody ani właściwości, która mogłaby mi zwrócić źródło.

0

Tylko po co Ci ten kod HTML? Skoro strona w angular/react, to pod spodem ma zapewne jakieś API, z którego możesz pobrać dane bezpośrednio.

0

Api jest ale płatne, a ja robię mały program tylko do moich potrzeb. Chodzi o translate google. Program ma działać tak, że podczas czytania jeśli nie wiem co znaczy dane słowo / wyrażenie to je zaznaczam, wciskam np. ctrl+c i z automatu mi zapisuje to słowo wraz z tłumaczeniem. Z tego co wyczytałem to api kosztuje 20$ za chyba milion znaków i trzeba podać pełne swoje dane do faktury na co całkiem nie mam ochoty. Dlatego kombinuje. Może znacie jakiegoś innego translatora, który udostępnia darmowe api dla jakiś małych ilości requestów?

0

Jeżeli chodzi o same parsowanie stron, to poczytaj o HtmlAgilityPack.

0

Dzięki @somekind nie znałem tego. Właśnie to testowałem i działa. Ale nie do końca... W odpowiedzi dostajemy najlepsze tłumaczenie. Tylko do nauki to trochę za mało bo na przykładzie słowa "humble" - z tego api dowiem się, że to znaczy pokorny. Natomiast ze strony translate.google dowiemy się, że "humble" to nie tylko przymiotnik, ale również może być czasownikiem i znaczy wtedy "upokarzać, poniżać". Dodatkowo dostajemy jeszcze sposoby użycia w danym języku co jest moim zdaniem świetne.
API: https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=pl&dt=t&q=humble
translate.google: https://translate.google.pl/#en/pl/humble
Dlatego mam takie parcie na wydobycie tego htmla.
Niemniej jednak wielkie dzięki za tego linka zwłaszcza, że była 2 w nocy:-) Jeśli nie uda mi się wydobyć nic z translate.google to pewnie użyję tego co mi podesłałeś.

Co do parsowania to używam fizzlerex czy jakoś tak. Zbudowane to jest właśnie na HtmlAgilityPack i można przeszukiwać html jak w jquery.

0

Znalazłem i sprawdziłem rozwiązanie, może komuś się przyda.
Użyłem klasy WebBrowser z System.Windows.Forms. Może to wyglądać mniej więcej tak:

WebBrowser browser = new WebBrowser();
browser.AllowNavigation = true;
browser.DocumentCompleted += WebBrowser_DocumentCompleted;
browser.Navigate(new Uri("https://google.com"));

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
      string renderedHtml = (sender as WebBrowser).Document.GetElementsByTagName("html")[0].OuterHtml; //ten string zawiera html po renderowaniu js
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1