Otwarty projekt - scraping/indexing/analytics

1

Czy ktoś zajmował (lub zajmuje) się tematyką scrapingu, wyszukiwarek, itp?
Od jakiegoś czasu chodzi mi po głowie pewien projekt, któremu chętnie poświęciłbym
trochę czasu. Mianowicie chodzi mi o stworzenie wyszukiwarki/indeksera, który miałby nieco odmienne
założenia od popularnych agregatorów/wyszukiwarek.
Po krótce chodzi mi o:

  • odsianie stron marketingowych
  • odsianie stron opartych o javascript
  • odsianie informacji promowanej
  • focus na informacji-wiedzy, przystępnych i otwartych formatach

Ten projekt istnieje w mojej głowie już jakiś czas, zatem miałem kilka podejść
do wstępnego zbadania różnych obszarów tego zagadnienia.
Najbardziej oczywiste sprawy to:
a) pozyskiwanie danych, scraping
b) storage
c) ocena informacji
d) wyszukiwanie informacji

Oczywiście temat scrapingu i wyszukiwarek jest światu znany, natomiast mnie jeszcze nie do końca,
i stąd moje zainteresowanie oraz chęć zgłębienia tych obszarów.

Jeśli chodzi o pozyskiwanie danych to trzeba mieć punkt początkowy, zatem niech nim będzie np. indeks
"top million domains" z alexa, które crawler będzie ignorował. Napisałem kilka crawlerów, zaznajomiłem
się nieco z historią crawlingu i przeczytałem kilka prac naukowych o możliwych architekturach.
Dużo ciekawych spraw - żeby pozyskać dużo danych trzeba sprawnie wykorzystać zasoby obliczeniowe, pamięć,
łącze sieciowe. A więc rozproszona architektura, multithreading/async, kolejki, crawl frontier, dns caching, scheduling, itp.
Trochę podłubałem już w tym temacie i jest bardzo ciekawy. Moje researche były oczywiście sporo ograniczone, więc
mówię tutaj o sprawach typu pythonowe grequests (mało roboty, duże narzut), c++ + curl (dużo roboty, mały narzut).
Oczywiście protokołów jest wiele, sieci i połączenia padają, serwery różnie się zachowują, są wynalazki typu robots.txt, blokady.
Dużo ciekawych spraw i komplikacji, możliwych pułapek, rekursywne strony spamerskie, itd.

W kwestii storage to z tego co obecnie rozumiem - na dużą skalę potrzebne są duże rozwiązania, dedykowane systemy plików,
klastry, macierze. Nie dotarłem do takiej skali, więc mój research tematu był ograniczony do postgresql jako agregatora
agregatora przetworzonych danych i mongodb/redis jako studni bez dna dla danych "surowych", cachowania, throttlingu, itd.
Wiem, że istnieją rzeczy typu Lucene/ElasticSearch i kilka innych, ale moja skala potrzeb była znacznie mniejsza dotychczas.

Ocena informacji to złożony temat. Jeden z tematów, w którym chcę się trochę rozwinąć to machine learning.
Samych metadanych oczywiście jest ogrom - choćby domeny, reflinki, certyfikaty, urle, metadane, nagłówki, formaty, długość treści, kodowanie, sekcje, frameworki, języki, itd. I głębiej jest treść - tutaj dochodzimy do oceny samego kontentu - keywordy, frazy, tematyka, obrazy, i cała reszta.
Do tego dochodzą ciekawostki typu webgraph/pagerank, macierze, modele, machine learning, sieci neuronowe, i wiele fajnych rzeczy, które mam nadzieję
kiedyś zgłębić.

Wyszukiwanie i prezentacja przetworzonej informacji to dla mnie jeszcze niejasny temat. Zakładając popularny model "strona www z jednym inputem", to wydaje
mi się, że kluczową sprawą jest "język jako interfejs wyszukiwarki".

Zmierzając do meritum - szukam ludzi, którzy zajmują się lub byliby zainteresowani takim projektem na początku for fun, a w przyszłości może for fun and profit.
Nie mam zarysu skali przedsięwzięcia, ani też knokretnych wytycznych. Moje projekty trafiają do szuflady, i chcąc to zmienić
próbuję wyjść z inicjatywą.

Co jest potrzebne?

  • chęci, umiejętności i otwarta głowa

Co można zyskać?

  • wiedzę, umiejętności

Obszary, umiejętności, ciekawostki:

  • admin, serwery, jails/containers, sieci, usługi (dns i reszta)
  • architektura i dev
  • protokoły, bazy danych, cache
  • ml, grafy, algorytmy
  • gramatyki, parsery, search,
  • r&d

Przykładowy task: mamy fragment tekstu i chcemy zgadnąć w jakim języku jest napisany.
Moglibyśmy szukać słów kluczowych, rozbijać na leksemy, tworzyć modele statystyczne.
Często skutecznym okazuje się jednak skompresowanie takiego tekstu zip'em i porównanie go ze skompresowanym tekstem deklaracji praw człowieka.

Na początek mam trochę kodu, trochę pomysłów. Mogę też dostarczyć na start infrastrukturę w postaci serwera.
Ogarniam administrację serwera, programowanie, architektury, bazy danych, trochę algorytmów i lubię r&d.
Mój startowy stack obecnie to okolice PostgreSQL, MongoDB, Redis, RabbitMQ, Python, C++, FreeBSD/Linux. Nie skreślam innych technologii,
sam używałem innych i znam kilka innych języków, niemniej mnie osobiście interesuje zdobycie przekrojowego know-how i rozwinięcie umiejętności
w kierunku ML, zatem nie rozważałem tego jako big data, java, hadoop, lucene.

Co z tego może wyjść?
Ciężko odpowiedzieć na to pytanie, ale rzucę kilka luźnych pomysłów:

  • wyszukiwarka
  • indekser wartościowej treści (przykładowo project gutenberg + archive.org + wikipedia, sci-* + cern + nasa + esa)
  • kolejny scrapinghub
  • sprzedaż danych (przykład: jeśli na jakiejś domenie wygasa certyfikat, to taką informacją są zainteresowani konkurenci)
  • analytics
  • google 2.0
  • nic

Możliwych kierunków jest wiele, mnie osobiście interesuje tworzenie czegoś użytecznego.
Szukam osób, które mają trochę wolnego czasu, chęci. Przydałby się też ktoś, do organizacji projektu
(podział pracy, komunikacja). Stawiam jednak na minimalizm, więc proste narzędzia i proste procesy.
W całym przedsięwzięciu zapewne znajdzie się coś ciekawego dla każdego poziomu doświadczenia, więc
kluczowe są chęci.

Jeśli ktoś jest zainteresowany udziałem w czymś takim, proszę o prywatną wiadomość.

0

Czemu chcesz odsiewać strony z JS?

I w jaki sposób chcesz to oceniać, czy dana strona się nadaje, czy jest do usunięcia. Praktycznie każda strona ma jakieś, chociażby malutkie, wstawki JS, chociażby statystyki odwiedzeń, czy jakiś onclick.

1

Czemu chcę odsiewać js?

Ponieważ www to nie webapps. Informacja jest hipertekstem, czyli markupem. Zatem js to w większości śmieci.
JS nie wzbogaca informacji,

Przykładowo:

  • trackery
  • cdn
  • info o użyciu cookies, które się nie pojawia, bo jest w js
  • blokady dostępu - sztaby ludzi pracują nad tym, piszą kod, testy, mają CI, automatic deployment, ty wchodzisz linksem i widzisz, że cała ich praca jest po prostu zbędna
  • przeciętny artykuł zawiera 2kb tekstu (treść), a strona waży 5mb (prezentacja)

Jak pisałem - mnie interesuje indeksacja treści. Przykładowo: prezentacja odkryć w dziedzinie nauki nie wymaga załącznika w postaci sieci reklamowych.

w jaki sposób chcesz to oceniać, czy dana strona się nadaje, czy jest do usunięcia. Praktycznie każda strona ma jakieś, chociażby malutkie, wstawki JS, chociażby statystyki odwiedzeń, czy jakiś onclick.

onclick to atrybut html, to mi nie przeszkadza.
Nie przeszkadza mi też mini framework do markdown czy też notacji matematycznej, ale facebook sdk, crowd control, nie są częścią informacji.

Jak zatem chcę odsiewać: tld, filename, zawartość skryptu. Kiedy rozbierzesz stronę na części i zmierzysz proporcję tekstu do javascript, to widać to lepiej.
Rozumiem, że są użyteczne skrypty, ale jeśli ich jest wiele na stronie, to najprawdopodobniej treść nie jest najistotniejszą częścią.

Załączam obrazek.

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