Analizator treści stron internetowych

0

Ja tu trochę z zewnątrz, ale i tak napiszę. Mam pytanie: czy jest możliwe przeanalizowanie kodu każdej strony pod kątem znalezienia w niej przez automat-program ze stuprocentową pewnością (a jeśli nie to z jaką pewnością: dużą/małą/bardzo małą itd.) treści, które zawierają strukturę lub menu strony (i jaka jest ewentualnie różnica praktyczna między nimi), treści tekstowej - takiej typowo przeznaczonej do czytanie, a nie np. nazw katalogów w menu czy innych tagów? Czy taka możliwość istnieje tylko dla CMSów (bądź podobnych) i czy taka procedura analizująca CMSy byłaby uniwersalna, sprawdzałaby się dla wszystkich i czy również bez nich by sobie poradziła?
Jest to też pytanie o to czy strony są pisane w tym samym standardzie (przynajmniej na pewnym, ogólnym poziomie), i jak rozumiem tak jest, wszak muszą je odczytać jakoś przeglądarki internetowe, w jednakowy i jednolity sposób.

Rav

0

ze stuprocentową pewnością

Nie ma stuprocentowej pewności jeśli chodzi o cokolwiek dotyczącego stron internetowych. Można dokonać jakiejś heurystyki, ale to nie to samo co 100% pewność.

Generalnie można napisać bota, który będzie chodził po stronach, parsował HTML do postaci drzewa (są biblioteki do tego, google: HTML parser ???, gdzie zamiast ??? piszesz swój wybrany język programowania), a następnie analizował strukturę drzewa szukając pewnych treści.

Tyle, że każda strona jest pisana trochę inaczej, więc będą to tylko heurystyki. Np. menu są często pisane za pomocą tagów <ul> i <li>. Więc jeśli napotkasz na strukturę typu <ul><li>foo</li><li>bar</li></ul> to być może jest to menu. (ale nie masz pewności, musiałbyś odróżnić menu od zwykłej listy wypunktowanej). Ale np. jeśli zobaczysz, że dana lista ma klasę czy id menu-cośtam to już też jest pewna poszlaka, że to menu. Ale też nie pewność.

Oczywiście, jeśli natrafisz na strony pisane w nieco bardziej semantycznym HTMLu, to możliwe, że menu będą mieć atrybut role="menu", możliwe, że zostaną też użyte tagi takie jak nav itp. Tyle, że nie na wszystkich stronach masz tego rodzaju semantyczny HTML.

treści tekstowej - takiej typowo przeznaczonej do czytanie, a nie np. nazw katalogów w menu czy innych tagów

tu byś chyba po prostu musiał analizować zawartość poszczególnych tagów (np. choćby taka pierwsza naiwna heurystyka mogłaby wyglądać tak, żebyś sprawdzał długość tekstu - jeśli jest coś do czytania to powinien być to dłuższy tekst - i szukał np. słów w języku polskim, czy czegoś co wyglądałoby na zdania, np. ciągu wyrazów, które by się kończyły kropką, po której pierwszy wyraz zaczynałby się wielką literą).

No i też pytanie w jakim celu byś to chciał analizować, bo to też różnica.

Jest to też pytanie o to czy strony są pisane w tym samym standardzie (przynajmniej na pewnym, ogólnym poziomie),

Nie. Strony są pisane w różnych standardach i w różnych stylach. Kompletny dziki zachód.
Owszem, strony powinny być pisane obecnie w HTML5, używając semantycznego kodu, bla, bla, bla - ale niestety to jest tylko postulat, a nie rzeczywistość..

0

Tyle, że każda strona jest pisana trochę inaczej, więc będą to tylko heurystyki. Np. menu są często pisane za pomocą tagów <ul> i <li>. Więc jeśli napotkasz na strukturę typu <ul><li>foo</li><li>bar</li></ul> to być może jest to menu. (ale nie masz pewności, musiałbyś odróżnić menu od zwykłej listy wypunktowanej). Ale np. jeśli zobaczysz, że dana lista ma klasę czy id menu-cośtam to już też jest pewna poszlaka, że to menu. Ale też nie pewność.

Oczywiście, jeśli natrafisz na strony pisane w nieco bardziej semantycznym HTMLu, to możliwe, że menu będą mieć atrybut role="menu", możliwe, że zostaną też użyte tagi takie jak nav itp. Tyle, że nie na wszystkich stronach masz tego rodzaju semantyczny HTML.

No więc trzeba by oprzeć się na strukturze plików, jak są umieszczone na serwerze, bo ta jest pewna, i nie potrzebuje żadnej heurystyki. Spotkałem się z programami, które potrafiły wyciągać wszelkie podstrony danej strony, nawet te, które nie pojawiały się w menu. Ale racja w menu zwykle są to pojedyncze słowa, łatwe do pomylenia z czymś innym, ale jeśli posiadają odnośniki i prowadzą do podstron w sumie są niejako składową menu. Zastanawiam się tylko czy ten program potrafił uporządkować te pliki z serwera w jakąś hierarchię (to strona główna, to są podstrony, to jeszcze pod-podstrony itd.). No nie wiem.

tu byś chyba po prostu musiał analizować zawartość poszczególnych tagów (np. choćby taka pierwsza naiwna heurystyka mogłaby wyglądać tak, żebyś sprawdzał długość tekstu - jeśli jest coś do czytania to powinien być to dłuższy tekst - i szukał np. słów w języku polskim, czy czegoś co wyglądałoby na zdania, np. ciągu wyrazów, które by się kończyły kropką, po której pierwszy wyraz zaczynałby się wielką literą).

Być może tak działa ten tryb czytania w Maxthonie, akurat nie mam teraz sposobu sprawdzić czy jest on niezawodny.

Nie. Strony są pisane w różnych standardach i w różnych stylach. Kompletny dziki zachód.
Owszem, strony powinny być pisane obecnie w HTML5, używając semantycznego kodu, bla, bla, bla - ale niestety to jest tylko postulat, a nie rzeczywistość..

Dzięki za odpowiedź. Ale skoro przeglądarka musi to jakoś odczytać, muszą istnieć jakieś, przynajmniej podstawowe, zasady pisania stron.

0

Przypominam, że jestem tylko wykształconym laikiem, ogarniającym nieco informatykę

0

Spotkałem się z programami, które potrafiły wyciągać wszelkie podstrony danej strony, nawet te, które nie pojawiały się w menu.

Same podstrony to akurat nie problem, wyciąga się atrybut href z tagów <a> (pomijając już istnieje dynamicznych stron napisanych we frameworkach JavaScriptowych, gdzie podstrony są odpalane dynamicznie za pomocą JavaScriptu a nie samym HTMLem).

Natomiast podstrony to tak naprawdę dalej strony takie same jak strona główna. Więc łapiesz podstronę i na tej podstronie może być zmieszane wszystko - menu, teksty itp.

Dzięki za odpowiedź. Ale skoro przeglądarka musi to jakoś odczytać, muszą istnieć jakieś, przynajmniej podstawowe, zasady pisania stron.

Przeglądarka wszystko łyknie na tyle, żeby wyświetlić, nie znaczy to, że zrozumie na poziomie semantycznym.

Przypominam, że jestem tylko wykształconym laikiem, ogarniającym nieco informatykę

Ew. możesz poszukać gotowych narzędzi (ja bym zaczął szukanie pod web crawler, outline of HTML document, outline generator, HTML parser, screen reader, web mining etc. dodałbym jeszcze gdzieniegdzie słówko "semantic"). Tylko, że żeby coś sensownego znaleźć, musiałbyś najpierw zdefiniować co chcesz osiągnąć, po co chcesz te strony analizować.

No więc trzeba by oprzeć się na strukturze plików, jak są umieszczone na serwerze, bo ta jest pewna

nie jest pewna.

  • często nie widzisz struktury plików na serwerze, chyba że znajdziesz link do pliku
  • adresy internetowe to abstrakcja, serwery je "fałszują" (to znaczy podmieniają. Jak zobaczysz stronę facebook.com/blabla nie musi to wcale znaczyć, że istnieje plik blabla na serwerze facebooka.

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