AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Crawlscript (nom temporaire) - Proof of concept

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Crawlscript (nom temporaire) - Proof of concept   Sam 2 Avr 2016 - 10:35

CrawlScript
Parser le web!

Présentation

CrawlScript est un langage simple conçu pour extraire des données depuis une source html.
En effet il permet de se déplacer facilement dans l'arbre crée a partir d'une page, de passer d'un lien a un autre, et fonctionne sur un principe de pile d'états, a chaque fois qu'on sort d'un scope l'état précédent est restauré.

Cette version est une version proof of concept développée sur un coup de tête en quelques heures.
Elle est donc minimaliste mais c’était surtout pour voir si le langage était viable.


Exemple

Voici un script capable d'extraire les images d'une galerie d'images, et de passer a la page suivante pour extraire la galerie complète.
Code:
set current_page "http://pixeljoint.com/pixels/new_icons.asp"
loop
{
  jump current_page
  {
    // Extraction des images
    dive <div class="imgbox">
    {
      parent
      {
        foreach <div class="imgbox">
        {
          dive <a>
          {
            print extract "href"
            jump extract "href"
            {
              dive <div id="container">
              {
                dive <div class="bxconnect">
                {
                  dive <img id="mainimg">
                  {
                    download extract "src"
                  }
                }
              }
            }
          }
        }
      }
    }
    // Passage a la page suivante
    print "======================================================"
    dive <div class="pager">
    {
      first <a> // bug: obligé de spécifier paramètre sinon marche pas
      {
        next {
          next {
            next {
              print link extract "href"
              set current_page link extract "href"
            }
          }
        }
      }
    }
  }
}


Download

CrawlScript pour windows, première version: http://host-a.net/u/onilink_/crawl.7z
Une version qui utilise wget pour le téléchargement des fichiers, ce qui permet de gérer https: http://wyvup.com/?c=A2cf3S9

Keywords

Instructions:
  • download url_string : télécharge le fichier passé
  • print string : affiche le texte passé


Parcours:
  • jump url_string : change de page web
  • dive <balise> | dive <balise attribute="value"> : parcours récursif jusqu’à la balise spécifiée
  • parent : se deplace sur la node parent
  • first : se deplace sur la premiere node enfant
  • next : se deplace sur la prochaine node


Boucles:
  • foreach <balise> | foreach <balise attribute="value"> : boucle sur toutes les balises enfants qui ont la balise spécifiée
  • loop : boucle infinie


Manipulation de texte:
  • extract attribute_string : extrait un attribut d'une balise
  • link url_string : permet de passer un lien relatif en lien absolut
  • html : donne le html formaté contenu par la node courante


Variables:
  • set variable_name value_string


Améliorations

Il manque pas mal de keywords et de concepts basiques comme la possibilité d'effectuer une
condition. La syntaxe est actuellement lourde ( { et } obligatoires ) et le parseur a peut être
quelques mini bugs (c'est pour ça que j'affiche le code quand on exécute un script, pour voir si tout
roule niveau parsing, par ex imbriquer un bloc dans un bloc vide bug...).

Il est a prévoir aussi de permettre de modifier le header de la requête http, en effet certains
sites sont "protégés" et il faut donc feinter pour pouvoir dump leur contenu.

Le parseur html est un parseur totalement custom, il se peut qu'une page avec un contenu vraiment
dégueulasse puisse avoir du mal a être parsé (même si j'ai fait le parseur de manière a ce qu'il
puisse se débrouiller avec du code vraiment vraiment dégueulasse).
Il est simple de vérifier le html après parsing avec le keyword html.


Bref hésitez pas a me dire ce que vous en pensez, et si jamais vous l'essayez si vous avez une idée de
feature non prévue actuellement, postez ici :p

_________________
                 
Revenir en haut Aller en bas
Rem_101
*Excellent utilisateur*
avatar

Messages : 4355
Localisation : chez votre marchand de journaux

MessageSujet: Re: Crawlscript (nom temporaire) - Proof of concept   Dim 3 Avr 2016 - 9:09

J'essaie ca cette semaine, mais ca peut faire gagner du temps à bien des égards ! Smile

_________________
"Nan... C'est rien le vieux... C'est le compte qui n'y était pas... Il en manquait un..."
Revenir en haut Aller en bas
 
Crawlscript (nom temporaire) - Proof of concept
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Coloration temporaire ou semi-permanente autrement dit.
» militaire en renfort temporaire à l'étranger
» la piscine ...
» nouveau mfa
» cessation d'activité ou pas??

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets-
Sauter vers: