Jak napisać program pobierający informacje ze stron internetowych

0

Witam wszystkich. Potrzebuję programu, który zautomatyzuje część mojej pracy. Chodzi o przeglądanie różnych witryn z ofertami, porównywanie ich itd. Sprawa wydaje się dość prosta: program ma ograniczać się do kilku portali, ma przy każdym uruchomieniu samodzielnie ustawiać odpowiednie filtry, następnie otwierać poszczególne oferty, sczytywać stamtąd interesujące mnie dane, a następnie wrzucać je do jakiejś bazy danych. Przy każdym rekordzie powinien też wrzucać link do ogłoszenia, z którego program pobrał dane.
Mam dwie opcje: zlecić komuś napisanie takiego programu, albo zrobić to samodzielnie. Jestem trochę nerdem. Jeśli ma zająć mi to pół roku, nie ma problemu. Jedyna moja styczność z "kodzeniem" miała miejsce lata temu w korpo, i były to proste makra w excelu i SQL. Nie miałem nigdy żadnych szkoleń, ale jako "samouk" miałem wrażenie, że ogarniam więcej, niż inni w korpo po szkoleniach.
Zależy mi na tym, aby wyniki zapisywały się na bieżąco np w jakimś .csv, abym mógł po jakimś czasie łatwo analizować dane pod kątem statystki, używając Statistica czy nawet Excela. Program będzie pobierał tylko informacje tekstowe/liczbowe, żadnych obrazków.
Potrzebuję wskazówek: od czego zacząć? W którym języku programowania będzie to najłatwiej zrobić? Jakie mogą pojawić się przeszkody? (np. w jednym z portali, który mam na celowniku, wymagane jest logowanie. Albo po jakimś czasie portal może sobie przebudować layout, co będzie prawdopodobnie wymagało przebudowy mojego programu). Ile czasu może to zająć osobie nieznającej temat, ale chętnej go zgłębić?
Wiedza i umiejętności są kluczem do sukcesu zawodowego. Nawet jeśli miałbym gdzieś po drodze się potknąć i zaniechać, zachowam spory kawałek wiedzy dla siebie. Pozdrawiam :)

0

Dokładnie wczoraj zrobiłem coś takiego - 1h pracy. Pobrane i sparsowane około 1300 rekordów, tylko że strona nie miała logowania.
Ja to zrobiłem w czystym phpie. Pomijałem kwestie wydajności czy faktu, że mogli mi zablokować dostęp do strony :)

0

Dzięki! Już mam trochę lektury. Jeśli chodzi o CSV jako plik wyjściowy, wybrałem go dlatego, że łatwo go zaimportować do statistiki czy excela i tam się bawić. Jeśli chodzi o kwestię logowania, na pewno ten portal zostawię na sam koniec. No właśnie, strony i portale mają pewnie jakieś wykrywacze botów, stąd wskazówki typu jednosekundowe pauzy są jak najbardziej wksazane :)

0

Sam core crawlera to nie problem. Ból to będzie klepanie "scraperów" do konkretnych stron, bo każda strona dostarcza dane w inny sposób.

0

Nie polecam jechać na czysto jsoupem albo tego typu odpowiednikami - w node masz puppeteera który odpala sobie headless chromium, renderuje całą stronę (można robić screenshoty dla diagnostyki), wykonuje JS na stronie, możesz zwykłym DOMowym api wyciągać dane (kod wykonuje się w kontekście przeglądarki, więc masz de facto kopiuj-wklej z konsoli przeglądarki), kilkać po buttonach - to jest chyba odpowiedni poziom abstrakcji dla kogoś kto nie programuje a by chciał. Jeśli to co scrapujesz to jakieś SPA to polecam sprawdzić wcześniej czy nie wystawiają tych wszystkich ofert jakimś wygodnim API (jak na przykład justjoin.it).

Musisz ogarniać:

  • podstawy JSa
  • podstawy DOM (querySelectorAll załatwia ci większość roboty ale czasem trzeba np połazić sobie gdzieś po tym DOM)
  • obsługę współbieżności (callbacki, promises, async/await)
  • jakąś bazę (wyżej wspomniany sqlite jest dość wygodny o ile sobie opromisujesz jego API oparte na callbackach) albo po prostu ciepnąć to do CSV jak bardzo chcesz (nie wiem co chcesz z tymi danym robić, może faktycznie excel jest wygodniejszy)

Problemem z puppeteerem jest zrównoleglenie go (zwłaszcza że chromium to krowa), ale to problem który możesz sobie ogarnąć jak będzie ci coś działać.

0

Zainstalowalem sobie node, zainstalowałem również inne dziwne narzędzia, najwyraźniej do czegoś potrzebne. Jest niestety problem przy instalacji SQLite3 dla node. Podążam za tym tutorialem: https://www.npmjs.com/package/sqlite3 , ale niestety za każdym razem wywala pierdyliard błędów. Czy do Node jest koniecznie potrzebny SQLite3? Może być jakaś inna bazodanowa aplikacja? Przypomniałem sobie, ze mam przecież MSAccess, który był razem w pakiecie z excelami i wordami.

0

Zamiana sqlite3 na accessa to jak zamienić gumę do żucia na azbest. Ale możesz jeśli sumienie ci na to pozwala.

0

moja "baza danych" będzie składała się zaledwie z kilku max kilkunastu kolumn, będą jedynie zaciągane wartości liczbowe, daty oraz tekst. Żadnych obrazków, żadnych innych plików. Myślę, że azbest wytrzyma próbę ;)


przy próbie instalacji Axios (https://www.npmjs.com/package/axios), wykrzacza mi podobne błędy. Prawdopodobnie jak się z tym uporam, to i zainstalowanie SQLite3 też powinna przebiec pomyślnie.

0

Sam dopiero rozpoczynam naukę programowania w Pythonie, napisałem kod który informuje mnie gdy cena konkretnego produktu jest niższa niż założyłem na tej zasadzie można dodać więcej takich przedmiotów i wyniki zapisać do csv
jeżeli Ci się przyda https://repl.it/@duszek91/day-47#main.py

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