Lizibilitate mâinile proprii

Lizibilitate mâinile proprii
Din moment ce a câștigat Marele chinez Roskomnadzor lucrurile noastre pentru a ocoli blocajele în Internet nu este încă deosebit de învățat, și să ne spună ceva ciudat despre munca lui încă mai doresc să ne spună despre reimplementatsiyu similar cu algoritmul Diviziune folosind Node.js și Institutul de Tehnologie Beytszinskogo.







Despre ce este vorba?

Lipsă lirică despre parseri


Caracteristica principală a unui analizor de situri sau a altor formate slab structurate este cantitatea de cunoștințe despre cazuri particulare de utilizare a formatului în sălbăticie.

Un caz degenerat de a avea toate cunoștințele este un parser al unui singur site. Ie dacă vrem să fure articole Habrahabr, de exemplu, pentru a le imprima pe timp de noapte pe o imprimantă cu jet de cerneală și un sacrificiu pentru Satana - ne putem uita la aspectul existent și este ușor să se determine că titlul post este h1.title.

Un program scris în acest fel aproape că nu va fi greșit; pentru fiecare site diferit de Habrahabra este necesar să se scrie un nou program.

Un caz ideal degenerat: parserul nu știe în ce format a primit datele. Un exemplu de astfel de program este șirul de caractere (există în majoritatea sistemelor de operare care nu sunt folosite în joc).

Dacă aplicați șiruri într-un fișier care nu poate fi citit, puteți obține o listă cu tot ceea ce arată ca textul din interiorul acestui fișier. De exemplu, comanda va imprima o gramada de linii pentru formatare în ls binar. și ajutor.
Cu cât cunoașterea este mai mică, cu atât este mai generală parserul.

Ce este deja acolo

Versiunea actuală de citire este închisă și atârnată cu chifle de diferite cereri. Există un API.

Există o furcă a primei versiuni a Readability by Apple (funcția Reader în browser-ul Safari). Codul sursă nu este foarte deschis, dar uita-te la ea cât posibil, există chiar mai multe expresii regulate și cazuri speciale (de exemplu, există o variabilă - isWordPressSite).

Probleme ale scriptului original - complexitatea modificării, heuristica arcadei. Practic funcționează, dar necesită o reglare finală a dosarului. Versiunea Apple este licențiată, de asemenea, incomprehensibil.

Ce trebuie să scrii


Un parser de site-uri cu cunoștințe minime de marcare. Date de intrare - o pagină a site-ului sau un fragment al paginii. Rezultatul este o reprezentare de text a datelor de intrare.







Un criteriu important este universalitatea: programul va funcționa atât pe client, cât și pe server. Deci, noi nu devin atașate la implementari existente ale DOM, și de a construi structura de date (de asemenea, funcționează mai rapid decât DOM completă, deoarece datele trebuie să gulkin, de exemplu, nas).

Din același motiv, programul nu va putea să descarce în mod independent pagini de pe Internet, să stocheze rezultatele pe un disc, să aibă o interfață cu utilizatorul, să împletească o cruce.

Algoritmul vieții și aventurii


Motorul de căutare a găsit mai multe articole despre algoritmizarea procesului de mai sus. Cel mai mult mi-a plăcut aceste PDF-uri chinezești.

Formulele la mine s-au dovedit și altele, așadar voi vorbi despre varianta algoritmului chinezesc.

Extinderea pentru exploatarea muncii

Doar în cazul în care eu încă mai verifica că după îndepărtarea resturilor evaluarea părintelui a crescut, în cazul în care nu (sau a crescut nesemnificativ) - Nu șterge dacă nu este suficient.

HTML. Algoritmul nu utilizează cunoștințe despre structura documentului, poate fi acum adăugat pentru a îmbunătăți (sau accelera) activitatea programului. Ie spuneți, anticipați în avans

și