Komercyjny web scraping to skomplikowany proces. Liczy się w nim jakość danych, minimalizacja braków, umiejętność utrzymywania infrastruktury, dobór proxy, strategii, jak i ciągły monitoring działań botów. W tym artykule omówię wybór firmy do web scrapingu.
Stojąc przed koniecznością scrapowania istnieją dwie możliwości: scraping samemu lub zlecenie tego zadania firmie, która zajmie się tym od A do Z.
O scrapowaniu samodzielnym na blogu znajdziesz naprawdę wiele, a w przyszłości będzie o tym jeszcze więcej wpisów, a nawet dodatkowe materiały edukacyjne. Jeżeli dopiero zaczynasz przygodę ze scrapingiem polecam Ci przeczytać wciąż aktualny artykuł „Web Scraping w Pythonie” lub „Web Scraping w Scrapy”.
W tym artykule chciałbym poruszyć drugą kwestię, czyli wyboru zleceniobiorcy na projekt scrapingowy.
Każdy wybór firmy specjalistycznej wykonującej dla nas projekty jest trudny, gdyż nie ma pewności jak współpraca będzie przebiegać, czy pomiędzy stronami będzie „flow”, czy wykonawca nie zawali z winy swojej lub przyczyn losowych.
Istnieje jednak kilka zasad, którymi warto kierować się wybierając firmę scrapingową.
Próba zrozumienia projektu
Najważniejszym etapem w procesie zlecania projektu jest rozmowa na temat zadań do wykonania. Na pierwszy rzut oka sprawa może wydawać się prosta: zleceniodawca wskazuje, jakie dane potrzebuje, a firma scrapingowa pobiera je i dostarcza w odpowiednim formacie.
Oczywiście tak zazwyczaj jest, jednak w każdym miejscu jest jakieś pole do optymalizacji.
To zleceniodawca najlepiej wie, jakie dane są mu potrzebne, jednak to wykonawca ma doświadczenie z pobieraniem danych i może w tej materii pomóc.
Nie każde dane da się pobrać w rozsądnym czasie przy ograniczonych środkach. Niekiedy dane znajdujące się na jednej ze stron, dostępne są też na innych.
Żeby jednak wykonawca mógł pomóc w optymalizacji czasowej i kosztowej projektu, musi poznać cały case businessowy i zrozumieć projekt. Jeżeli firma scrapingowa stara się zrozumieć do czego potrzebne są dane, to zdecydowanie dobry znak.
Rozsądny cennik
Co do rozliczenia za usługi scrapingowe sprawa jest dość prosta. Stosowanie stawki godzinowej lub odgórnie narzuconej stawki za określoną liczbę wierszy danych nie ma większego sensu.
Stawka godzinowa zazwyczaj bywa krzywdząca dla którejś ze stron. W przypadku gdy wykonawca nie jest uczciwy, sztucznie zawyża liczbę godzin roboczych. W przypadku uczciwego liczenia godzin pracy zazwyczaj traci na tym wykonawca. Praca nad projektami scrapingowymi polega nie tylko na tworzeniu kodu, lecz także optymalizacji programu czy monitorowaniu skuteczności. W przypadku tego typu długotrwałych czynności utrzymaniowych trudno jest dokładnie określić liczbę godzin, jaką się w to wkłada.
Określona stawka za określoną liczbę danych również nie jest sprawiedliwa. Pobieranie różnych danych wymaga innych nakładów pracy i środków finansowych. Scrapowanie danych z prostych stron bez systemów antyscrapingowych jest znacznie łatwiejsze niż ekstrakcja ze storn blokujących ruch botów i wymagających renderowania kodu JS.
Każdy projekt wymaga indywidualnego podejścia i powinien być wyceniany indywidualnie.
Sprzedaż usługi zamiast oprogramowania
Wiele firm zgłaszając się do firmy scrapingowej preferuje zakup oprogramowania. Taki wybór z ekonomicznego punktu widzenia może wydawać się rozsądny. Zleceniodawca płaci raz i może korzystać z programu przez dłuższy okres.
W praktyce sprawa jest znacznie bardziej skomplikowana. Oprogramowanie odpowiedzialne za scrapowanie danych zazwyczaj wymaga ciągłego utrzymywania i wprowadzania aktualizacji. Strony internetowe często zmieniają swoją strukturę prezentacji danych. Każda taka zmiana wymaga pewnego dostosowania kodu scrapera. Konieczne do wprowadzenia zmiany mogą być również spowodowane systemami antyscrapingowymi. Jeżeli podczas scrapowania coraz częściej pojawiają się bany, należy wtedy zmienić strategię.
Jeżeli firma zajmująca się web scrapingiem wykonuje tę usługę miesięcznie, wszystkie kwestie utrzymania oprogramowania konieczne do realizacji przedmiotu bierze na siebie. W przypadku sprzedaży praw do programu kwestie aktualizacji leżałyby po stronie zleceniodawcy. Rozwiązaniem tego problemu jest określenie określonej liczby rund aktualizacji oraz ustanowienie stawki za wprowadzenie zmian wykraczających poza określoną liczbę rund. To rodzi jednak dodatkowe problemy. Aktualizacje mogą nie być potrzebne przez wiele miesięcy, a po tym czasie mogą być konieczne kilka razy w miesiącu.
Kolejnym problemem przy przekazaniu oprogramowania jest kwestia kosztów utrzymania serwerów, proxy i usług dodatkowych. Konieczna może być również zmiana serwerów proxy.
Wybór formy rozliczenia jako miesięczna usługa pozyskania jest korzystna dla obu stron. Zleceniodawca zdejmuje ze swojej głowy wszelkie problemy związane z utrzymaniem infrastruktury, a zleceniobiorca jest w stanie dostarczać dane z wysoką skutecznością, mogąc dopasować narzędzia i działanie scrapera, gdy jest to konieczne.
Respektowanie zasad stron
Web scraping wymaga ciągłej i częstej interakcji ze stroną docelową, z której pobieramy dane. Ważne jest, aby w tym procesie nie być uciążliwym.
Warto, aby podczas scrapowania nie przeciążać serwerów docelowych. Oczywiście oznacza to spowolnienie procesu scrapowania, jednak może to wpłynąć pozytywnie na cały projekt.
Oprócz braku zdenerwowania właścicieli strony, takie podejście może przynieść bardziej wymierne korzyści. Brak dużego obciążenia strony zmininalizuje szanse na wzmożone wykorzystywanie systemów antyscrapingowych i banów. Dzięki temu scraping będzie mógł być wykonywany z wykorzystaniem znacznie mniejszej liczby proxy, co przełoży się na oszczędności finansowe.
Mimo spowolnienia samego wykonywania requestów, dzięki temu proces scrapingowy może być krótszy. Jeżeli ze strony witryny nie będzie wiele utrudnień, które będę wymuszały zmianę scraperów czy proxy, projekt będzie wymagał mniej pracy, co potencjalnie może go skrócić.
Przemyślane działanie
Web scraping to naprawdę specyficzna dziedzina. Szybciej, nie zawsze znaczy lepiej. Czasem pozorne przyspieszenie spowoduje znacznie większe opóźnienia w dalszych pracach.
Ważne jest zatem, aby działać w sposób przemyślany od początku.
Trudno jest odpowiednio wycenić i oszacować projekt scrapingowy, jeżeli nie zna się strony internetowej.
Przed scrapingiem trzeba najpierw stronę „przebadać”. Należy sprawdzić jakie ma zabezpieczenia, jakie limity, czy potrzebne jest używanie zdalnie sterowanych przeglądarek.
Dobrym znakiem podczas współpracy z firmą scrapingową jest gdy wykonawca rozpoczyna pracę właśnie od rozpoznania terenu.