• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak efektywnie stosować Web Scraping przy pomocy VBA: Omijanie trudności

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
348 wizyt
pytanie zadane 29 marca w Visual Basic przez Miedzcu Nowicjusz (130 p.)

Niestety będę pytał o rzeczy o których zupełnie nie mam pojęcia, wiec zakładajcie z góry że zagmatwam niepotrzebnie sprawę:

  1. Czy Web scraping przy pomocy VBA można podzielić na jakieś sposoby, rodzaje, stopnie zawansowania, kolejne coraz trudniejsze lekcje które trzeba opanować? Gdzie czerpać wiedzę o  Web scrapingu? Myślę nawet o lekcjach uczących łamania kodu – ale nie wpływaniu ale omijania takich podstawowych trudności w Web Scapingu (np. 15 sekundowe zapytania w celu nie bycia uznanym jako atak DDoS i tak dalej i tym podobnym )
  2. Pytanie wyżej zadaje gdyż nauczyłem się web scrapingu ze stron pod permanentnym linkiem, lub linkiem który ma w sobie zmienne parametry ale są one łatwo definiowalne (zakres dat, godzin itd. itp.) i można go hardcodować. Niestety zupełnie nie potrafię web scrapować stron stworzonych bodajże w JavaScript/JSON. Strona nie zmienia linku chodź zmienia swoją zawartość. Na stronie zmienia się parametry i należy wcisnąć przycisk „Load Data” by wyświetlić pożądane wyniki ale wciąż odbywa się to pod tym samym linkiem html. Jak zrobić by na takiej stronie działało macro pobierające zwartość? Jak to wszystko dekodować by krok po korku wiedzieć co szukać i gdzie szukać? Czy macie jakieś strony, materiały pozwalające na przeszkolenie z tego tematu?
  3. Jak radzić sobie na stronach podobnych do tych opisanych wyżej ale które jednak wyplowają przy ładowaniu danych jakiś odmienny link. Link który jest aktywny czasowo a już po 15 minutach jest nieaktywne (daje błąd 404) i trzeba pozyskać od nowa link wprowadzając na stronie głównej ponownie parametry.
2
komentarz 29 marca przez adrian17 Mentor (351,040 p.)
Pytanie 0: czemu akurat VBA? To jest... mega dziwny wybór. Większość tych pytań... w ogóle nie są problemami we współczesnych rozwiązaniach do scrapingu, od statycznych pająków (np scrapy), przez narzędzia JSowe (headless chrome przez np Puppeteera) po jakieś komercyjne rozwiązania chmurowe (apify? Ale tylko znam z nazwy, nie na tyle by polecić).
2
komentarz 29 marca przez Miedzcu Nowicjusz (130 p.)
Dzięki za odpowiedź. Adrian17 niestety nie działam hobbistycznie w domu ale w dość hermetycznym środowisku, nieufającym swoim użytkownikom - weryfikacje logowania, permisje, brak dostępu do surowych danych, wszystko odbywa się po stronie serwera, czasami jedynie możliwości operacji (podmiany parametrów) na stronie a w najlepszym wypadku wypluciu jakiegoś csv (jak autor narzędzia pozwoli) z danymi, które możesz obrobić zgodnie z własnymi potrzebami- na pewno swojego exe nie uruchomisz jak i nie zainstalujesz potrzebnych narzędzi programowania. Corpo które jest informatycznie do przodu (ogrom narzędzi web) ale jednocześnie nie działające w baraży IT (to nie ja mam odpowiadać za automatyzacje procesów a odział w USA). Te CSV czasami wymagają obróbki tych danych wiec naturalnym dla mnie pierwszym krokiem było rozwinięcie umiejętności w Excel oraz VBA. Oczywiście to może być mój błąd ale wynikające z chłopskiego myślenia/logiki (Excel jest dostępny wszystko inne poblokowane). Zaplanowane jest nauka JS/ python/ kotlin / mysql ale to prawdopodobnie dopiero w tym momencie gdy się upewnię że w tym hermetycznym środowisku niezwiązanym z IT będę wstanie je zastosować lub gdy sam hobbistycznie w domu będę ich potrzebował.
komentarz 30 marca przez VBService Ekspert (256,320 p.)
edycja 30 marca przez VBService

To może spróbuj sił z HTA, jest wbudowany w system Windows (kod możesz edytować w notatniku systemowym) i  możesz w nim używać VBS, JavaScript (m. in. JQuery), aplety JAVA i możesz zrobić do tego UI w HTML i CSS (m. in. np. Animate.css). wink

Sprawdź

 

BTW, możesz się pokusić o: PyScript. Python uruchamiany w przeglądarce, więc teoretycznie powinno też zadziałać w HTA, ale nie próbowałem więc nie jestem pewien na 100% (świeży temat)

komentarz 30 marca przez adrian17 Mentor (351,040 p.)
Może czegoś nie widzę, ale… co to ma do scrapowania istniejących normalnych stron?
komentarz 30 marca przez VBService Ekspert (256,320 p.)
edycja 30 marca przez VBService

No @Miedzcu; napisał:

w dość hermetycznym środowisku, nieufającym swoim użytkownikom - weryfikacje logowania

no i napisał, że używa Excele, więc można w pewnym sensie zakładać, że korzysta z Windowsa, który to obsługuje z poziomu systemu aplikacje HTA, a to już daje możliwości użycia javascript, vbscript (CreateObject - daje duże możliwości), z doświadczenia wiem, że w korporacyjnych komputerach z systemem Windows w większości przypadków HTA nie jest blokowane. Dawno temu też miałem podobny problem i do scrapowania i zmiany wyglądu stron w locie właśnie używałem HTA, bo nie można się było doprosić programistów o jakieś zmiany w narzędziach web-owych w pracy. Np. w HTA napisałem apkę do automatyzowania pewnych zadań w AD i jako magazynu danych używałem bazy Access-a (bez fizycznej obecności pakietu office w systemie - ODBC). Też nie mogłem używać nawet Notepad-a++, to napisałem sobie właśnie prosty edytor kodu w HTA, podpowiadał składnie, kolorował składnie, lepsze to było od systemowego notatnika. W obecnym czasie teraz lepiej jest używać PowerShell-a, ale vbscript dalej mimo wszystko daje radę no i można go użyć w HTA.

komentarz 30 marca przez VBService Ekspert (256,320 p.)

Reasumując Ja normalnie użył bym do tego python-a i np. Beautiful Soup, Requests-HTML, Requests. No ale kolega na korporacyjnym komputerze może korzystać tylko z tego co system oferuje lub z narzędzi do których ma dostęp. 

1 odpowiedź

0 głosów
odpowiedź 8 kwietnia przez niezalogowany
edycja 8 kwietnia

Odpowiem z innej bajki, jednak odpowiedź będzie merytorycznie WebScrappingu, więc proszę aby zechciał Pan przeczytać do końca z przymrużonym okiem. Osobiście polecam WebScrapping wykonywać w językach, które posiadają pełne do tego wsparcie ( bezpośrednie - mają gotowe klasy, metody i pośrednie - zbudowane przez społeczność narzędzia, biblioteki, frameworki ). WebScrapping to metoda dostania się do danych, pobrania danych, przedostania się dalej, pobrania kolejnych danych i cały czas, aż do osiągnięcia celu.

VBA nie został stworzony z myślą o WebScrappingu. To jest języka Event-Driven Programming Language. To oznacza, ze jest językiem w większości nasłuchującym do obsługi wydarzeń. Oczywiście można w nim pisać dużo ciekawych rzeczy, tak samo jak da się zrobić grilla w nierdzewnym bębnie od pralki - ale jak sam Pan wie, bęben służy do prania w pralce - dopiero kiedy osiąga status złomu, ludzie wycinają otwór i smażą tam kiełbasy ( serio ).

Połączeniem niezawodnym, które stosuję zawodowo od lat jest zestaw dwóch narzędzi jest:

  1. Python + Selenium + Scrapy
  2. PyTest + Playwright.

WebScrapping - zresztą każdy scrapping, obróbka danych, konwersja - to czysta przyjemność. Próg wejścia nie jest najniższy, ale tez nie jest ultra wysoki.

komentarz 8 kwietnia przez Miedzcu Nowicjusz (130 p.)
edycja 8 kwietnia przez Miedzcu

Jak najbardziej jest to merytoryczna odpowiedź. I jestem szalenie wdzięczny za poświęcony czas i przekazaną wiedzę. I ta wiedza jest w 1000% prawdziwa ale nie trafiająca w ryzy nakreślonych wymagań. 

Gdyby to ode mnie zależało i miałbym pełną swobodę w tworzeniu narzędzia Web Scapingu to pewnie już bym stosował zaproponowane rozwiązania choćby z szacunku dla Waszej wiedzy i doświadczenia. 

Niestety nie jestem wstanie przeskoczyć środowiskowych (korporacyjnych) ograniczeń inaczej jestem zmuszony do robienia grilla w nierdzewny bębnie od pralki :( + manualnie sprawdzanie tego co nie udało mi się zautomatyzować. 

Chyba że czegoś nie rozumiem...chyba że próbujecie mi sprzedać rozwiązania które są odporne na korporacyjne zabezpieczenia (do zastosowania w każdym środowisku).

Oczywiście ja też ucieka do Excela z racji mojej małej wiedzy o programowaniu - tzn. zwykle macro wyciąga dane ale samą obróbką danych, wyliczeniom zajmuje się Excel, którym potrafię się posługiwać  (inaczej mówiąc jak najszybciej uciekam od formy tekstowej programowania do formy graficznej "programowania" przy pomocy gotowych narzędzi/formuł Excela).

Dodatkowo mam ograniczoną kreatywność - widzę Excel jak naturalne środowisko do kumulowania danych z różnych źródeł (tj. z różnych stron korporacyjnych tworzonych często na zlecenie przez firmy trzecie - gdzieś indziej odczytam ilość osób przybyłych do pracy, gdzieś indziej prognozowaną ilość nieobecności, gdzieś indziej muszę odczytać ilość osób przydzielonych do danego zadania, gdzieś indziej odczytuje planowaną ilość towaru/ pracy, gdzieś indziej wydajność zespołów, gdzieś indziej jakość a gdzieś indziej są jeszcze inne dane/parametry - na jednej ze stron parametry są zapisywane na stronie w formacie tekstowy, gdzieś indziej można je wyciągnąć w postaci CSV a gdzieś to niestety strona zbudowana w Javascript/JSON z których nie jestem wstanie przy pomocy Excela/VBA/Power Query i moich umiejętności wyciągnąć te dane ) aby stworzyć swoisty dashboard agregujący informacje dla mojego stanowiska pracy by nie zareagować za późno na jakaś alarmującą sytuacje (maks 20 minut zwłoki gdyż same źródła dane nie odświeżają się na żądanie a co jakiś wyznaczony czas) lub narastające problemy. Obecnie główny czynnik stresowy w pracy to zbyt późna reakcja na sytuacje odbiegającą od normy tyle że tych parametrów do monitorowania jest tyle i w tylu miejscach że jest to żmudne i dosłownie codziennie napotykam się na scenariusz że mogłem czemuś zapobiec niestety nie skontrolowałem tych danych na czas a każda rzecz która jest na 99,99% zamiast +100% musi być raportowana.  A inaczej mówiąc moje stanowisko odpowiada żeby w pracy panował na odbywanej zmianie odpowiedni flow towaru, ludzi i pracy, jakości pracy oraz wydajności aby osiągnąć założony plan. 

Może moje umiejętności i kreatywność nie potrafią sobie wyobrazić by tworzyć dashboard w czymkolwiek innym (wykresy, alerty itd itp) niż Excel. 

Napewno spróboje swoich sił z HTA 

komentarz 8 kwietnia przez niezalogowany

Życzę Panu zatem dużo sukcesu. Proszę tak jak Pan napisał spróbować HTA. Natomiast w przyszłości w zgodzie ze swoimi przedmówcami zapraszamy do Pythona. Próg nie jest najniższy, ale uważam że sobie Pan absolutnie poradzi i doceni to może dziś nieznane narzędzie. Życzę dużo spokoju w pracy.

komentarz 8 kwietnia przez Miedzcu Nowicjusz (130 p.)
Dziękuje bardzo! Zaprojektowałem swoją ścieżkę rozwojową:

- aktualne piastowane stogniowsko:

1. Excel i 2. VBA

- dla przyszłych wyzwań gdzieś indziej (informatyczna ścieżka?) lub wyzwań prywatnych:

3. JavaScript 4. Kotlin 5. Microsoft Access 6. MongoDB 7. Python 8. MySQL

także ten Pythone jest na celowniku problem w tym że na obecnym stanowisku jest zupełnie nie do wykorzystania (nie jestem informatykiem a jedynie piastuje kierownicze stanowisko w firmie zajmującej się w magazynowaniu i wysłaniu towarów z dużą nakładką technologiczną gdzie w ograniczonym stopniu mogę korzystać z pasji do informatyki - na pewno nie jestem software engineer ale znowu dla swoich potrzeb w pracy jestem nim ale jedynie w Excelu).
1
komentarz 8 kwietnia przez Comandeer Guru (606,240 p.)

To jest języka Event-Driven Programming Language. To oznacza, ze jest językiem w większości nasłuchującym do obsługi wydarzeń. Oczywiście można w nim pisać dużo ciekawych rzeczy, tak samo jak da się zrobić grilla w nierdzewnym bębnie od pralki

Nie żeby coś, ale jednym z najpopularniejszych języków, w których pisze się scrapery (i ogólnie automatyzację przeglądarek), jest JS – który w dużej mierze bazuje na zdarzeniach. Sam zresztą wymieniasz wśród narzędzi Playwrighta, który pierwotnie powstał właśnie jako biblioteka dla Node.js. A przecież jest jeszcze Puppeteer czy choćby surowy WebDriver.

Podobne pytania

+1 głos
1 odpowiedź 380 wizyt
0 głosów
5 odpowiedzi 1,715 wizyt
pytanie zadane 3 października 2022 w Offtop przez nielotweb Bywalec (2,240 p.)
0 głosów
1 odpowiedź 526 wizyt
pytanie zadane 19 sierpnia 2022 w Python przez NewbieProgrammer Początkujący (480 p.)

93,185 zapytań

142,199 odpowiedzi

322,009 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1734p. - Anonim 3619784
  12. 1684p. - Mikbac
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1474p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...