Ściągniecie danych ze strony wymagającej logowania.

0

Witam.

Nasz system do zarządzania kontami pocztowymi w firmie nie posiada API ani automatu do wysyłania powiadomień do uzytkowników o tym że mają mało wolnego miejsca, więc pomyślałem o napisaniu jakiegoś automatu.

Automat musi:

  1. Otworzyć strone www z panelem
  2. Zalogować się
  3. Po zalogowaniu kliknąć w menu w jedną z pozycji - rozwinie się dodatkowe menu i w nim kliknąć kolejny link
  4. Pobrać listę
  5. Kliknąć w przycisk do wyświetlenia drugiej strony
  6. Pobrać listę

A następnie z tych list chciałbym odczytać potrzebne dane i ew wysłać powiadomienia.

Pytanie jakie narzędzia mogą pomóc w realizacji czegoś takiego?
Ew w jakim języku najlepiej się do tego zabrać (na co dzień piszę w C# i w nim próbowałem coś zrobić, ale WebBrowser zaczął stwarzać problemy już na samym początku - podczas próby otwarcia panelu wyświetla błąd "wystąpił błąd w skrypcie na tej stronie. Oczekiwano identyfikatora" i strona nie ładuje się w całości. W przeglądarkach strona otwiera się poprawnie).

Z góry dziękuję za pomoc.

0

Weź sobie cały link do tej drugiej strony. Pobierz sobie response z tego właśnie adresu, później sparsuj by mieć potrzebne dane i wysyłaj maile.

0

Pytanie - czy ten system jest przez Was zakupiony (jeśli tak, to czy był pisany na zamówienie, czy jest to jakiś "gotowiec")? A może sami go stworzyliście?

Bo ja bym jednak zaczął, zamiast bawić się w prowizorki w stylu "coś się zaloguje, coś sobie sprawdzi i gdzieś to prześle" pomyślałbym, jak można się za to zabrać porządnie. Może producent doda pewną funkcjonalność, albo osoba która aplikację pisała coś podpowie. Ewentualnie może dostać się "od tyłu" do bazy danych/dysku z zapisanymi wiadomościami i samemu sprawdzić ilość zajętego miejsca.

0

@sintloer pomijając to że to raczej nie zadziała, to nie o to mi chodziło :)

@cerrato system dostaliśmy wraz z hostingiem. Rozmawiałem z hostingodawcą i niestety "odbiłem się od ściany" stąd też próby samodzielnego kombinowania.

Używając biblioteki Selenium dla C# udało mi się zrealizować trzy pierwsze punkty.

Walczę teraz z kolejnymi - próbuje znaleźć sposób na wybranie konkretnych danych ze strony, bo niestety nie mają one żadnych unikalnych id czy klas.

0

A nie da się zalogować i pobrać tych danych wysyłając odpowiednie POST, GET? Być może strona nie ma publicznego API z opisem użycia ale tak naprawdę z niego korzysta i po wysłaniu odpowiedniego zapytania wszystko ładnie zwróci jako JSON a nie rzeźbienie po DOM. Trzeba prześledzić snifferem co się tam dzieje.

1

Najlepiej byłoby to robić w C#. Nie Web Browser, tylko musisz odpowiednio wysyłać/odbierać żądania post/get, tak jak to robi przeglądarka i obsługiwać cookies.

Jest to kłopotliwe i osobiście radzę korzystać z tego tylko wtedy, gdy naprawdę musisz. Drobne zmiany na stronie i wszystko się posypie.

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