Différences entre les versions de « Utilisateur:Simon BLONDEAU »

De {}
Aller à la navigation Aller à la recherche
 
(15 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
=page de code premier quadri de simon=
+
=page de code premier quadri B2 de simon=
  
 
==scénario binaire python==
 
==scénario binaire python==
Ligne 224 : Ligne 224 :
 
</blockquote>
 
</blockquote>
  
=page de code de simon deuxième quadri=
+
=page de code de simon deuxième quadri B2=
  
 
==création de bot==
 
==création de bot==
Ligne 246 : Ligne 246 :
 
explication de la trend florida man
 
explication de la trend florida man
 
https://en.wikipedia.org/wiki/Florida_Man
 
https://en.wikipedia.org/wiki/Florida_Man
 +
 +
"update du scénario"
 +
scénario qui renviendrait à poster tous les jours une citation d'un livre (en l'occurence la pierre et le sabre de Eiji Yoshikawa) et de la faire sous titrer par le nom d'un dirigeant de l'URSS.
 +
Une parodie de compte de citation de gens célèbre en somme
 +
 +
=== schema de bot ===
 +
 +
<pre style="white-space: pre; overflow:auto;">
 +
+----------------------+          +-----------------------------+
 +
|                      |          |se rend sur la page wikipédia|
 +
| lancement du script  +--------->+"liste des dirigeants        |
 +
|                      |          |de l'union so^iétique"      |
 +
|                      |          +--------------------------+--+
 +
+----------+-----------+                                    |
 +
          |                                                |
 +
          |                                                v
 +
          v                                  +--------------+----------+
 +
+----------+------------+                    |selectionne aléatoirement|
 +
|se rend sur l'onglet  |                    |un nom/prénom de        |
 +
|citation du livre      |                    |dirigeant de l'URSS      |
 +
|"la pierre et le sabre"|                    +--------------------+----+
 +
|sur le site babelio    |                                          |
 +
+-----------+-----------+                                          |
 +
            |                                                      |
 +
            v                                                      |
 +
+----------+----------+                                          |
 +
|sélectionne          |                                          v
 +
|aléatoirement une    |                      +-------------------+-------+
 +
|citation du livre    |                      |sous-titre la citation avec|
 +
|parmis celles postées+---------------------->+le nom et le prénom d'un  |
 +
+---------------------+                      |dirigeant de l'URSS        |
 +
                                              +-------+-------------------+
 +
        XXXXXXXXXXXXXXXXXXXXXXXXXX                    |
 +
    XXXX                          XXXX                |
 +
  XXX    XXX  Bidule machin        XXX              v
 +
  X      X  X  @superbidule          X          +---+--------+
 +
XX    X    X                        XX  <-------+poste sur  |
 +
X      X  X                          X          |twitter sous|
 +
X        XXX                          X  <-------+cette forme |
 +
X            "citation de la pierre  X          +------------+
 +
X            et le sabre"            X
 +
X                                      X
 +
X                                      X
 +
XX    - un dirigeant de l'URSS      XX
 +
  XX                                  XX
 +
  XXXX                            XXXX
 +
      XXXXXXXXXXXXXXXXXXXXXXXXXXXX
 +
</pre>
 +
 +
 +
 +
=page de code premier quadri de B3 de simon=
 +
 +
==base de données==
 +
 +
https://www.animecharactersdatabase.com/
 +
 +
Base de données regroupant les personnages de divers production d'animation japonaise pour les fans plus ou moins hardcore. Des classements par tags décrivant visuellement les personnages sont présent. des tests pour affiner les "catégorisations" sont mis en oeuvre et des classements hiérarchiques selon les utilisateurs sont aussi de mise. C'est un site de plus ou moins mauvais gouts.
 +
 +
 +
https://untappd.com/
 +
 +
Mélange entre base de données et réseau social. Nécessite une inscription pour l'utilisation et le marketing de l'application (car c'est aussi et surtout une application sur smartphone) suggère une application sociale avec leur slogan "Drink Socially". Le site est de même nature que google avis, trip advisor, yelp ou tout autre service de conseil entre utilisateur et où ces derniers s'improvise spécialiste.
 +
celui-ci est spécialisé dans le référencement de bar/brasserie/bière et donc de leurs catégorisation. Les tenanciers des bars et des brasserie peuvent y entrer leurs produits avec toutes les caractéristiques (degrés d'alcool, niveau d'amertume, houblon et malt utilisé, etc...) et les utilisateurs peuvent les noter et les reclasser en fonction de leurs appréciations.
 +
 +
 +
https://www.facebook.com/groups/Glitchcollective
 +
 +
Page sur laquelle est publié toute sorte d'oeuvre produite par des artistes se revendiquant du courant numérique du Glitch. Cette page se traduit maintenant en regroupement de contenu artistique numérique. C'est plus du partage de contenu que réellement une base de données. Mais c'est une base de donnée classé par artistes et par dates qui se présente devant nous  sans qualification concrète du contenu excepté le fait que les artistes se revendique du même courant.
 +
 +
 +
https://feu.ultravnr.be/
 +
 +
Site regroupant les événements à venir sur Bruxelles et les expositions. Les événements sont annoncés et classé sur la page de manière chronologique mais des catégories d'événements sont aussi présentes ce qui permet de faire quelques recherches pour trouver quelque chose de plus précis que juste un événements (type soirée, workshop, expo, cours etc..).
 +
Le site n'est malheureusement plus actif depuis juin apparement mais les archives sont toujours là pour montrer ce qu'il y a eu auparavant.
 +
 +
==Schéma==
 +
 +
[[Fichier:Schéma Simon.png]]
 +
 +
==Schéma du script==
 +
[[Fichier:schema_simon_3.png]]
 +
 +
=Script journalistique Mondher 2eme quadri=
 +
 +
===le matin===
 +
 +
<syntaxhighlight lang="python">
 +
#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de lematin.ch
 +
 +
import mechanize
 +
 +
import lxml.html as lh
 +
 +
import cssselect
 +
 +
import ssl
 +
 +
import os
 +
 +
from urllib.parse import urlparse
 +
 +
 +
def getSrcFromURL(url):
 +
    data = br.open(url)
 +
 +
    rawdata = data.read()
 +
    unicode = rawdata.decode('utf-8', 'ignore')
 +
    src = lh.fromstring(unicode)
 +
    return src
 +
 +
def getResults(src, selecteur):
 +
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
 +
    results = src.xpath(chemin_xpath)
 +
    return results
 +
 +
#initialisation d'un objet "navigateur" avec la librairie mechanize
 +
br = mechanize.Browser()
 +
 +
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 +
 +
br.set_handle_robots(False)
 +
#fin de la configuration de mechanize
 +
 +
try:
 +
    _create_unverified_https_context = ssl._create_unverified_context
 +
except AttributeError:
 +
    # Legacy Python that doesn't verify HTTPS certificates by default
 +
    pass
 +
else:
 +
    # Handle target environment that doesn't support HTTPS verification
 +
    ssl._create_default_https_context = _create_unverified_https_context
 +
 +
 +
 +
 +
#data = br.open('https://www.lacote.ch/articles/sports/tennis/tennis-open-d-australie-belinda-bencic-se-qualifie-pour-le-troisieme-tour-1043578', timeout=10.0)
 +
 +
src = getSrcFromURL('https://www.lematin.ch/')
 +
 +
#on convertit un sélecteur css en objets de type "cssselector"
 +
selecteurs = cssselect.parse('article a')
 +
 +
 +
for selecteur in selecteurs:
 +
    print(selecteur)
 +
    articleLinks = getResults(src, selecteur)
 +
 +
    for articleLink in articleLinks:
 +
        print (articleLink.get('href'))
 +
        src = getSrcFromURL(articleLink.get('href'))
 +
 +
        selecteursArticle = cssselect.parse('div.Article_elementTitle__3we9B h1, div.Article_elementLead__2nNxU h2, h3, div.Article_elementTextblockarray__WdRYM p, .sc-17d1f6z-1.gBPCId')
 +
 +
        for selecteurArticle in selecteursArticle:
 +
            print(selecteurArticle)
 +
            resultats = getResults(src, selecteurArticle)
 +
 +
            for resultat in resultats:
 +
                print(resultat.text_content())
 +
</syntaxhighlight>
 +
 +
===20 minutes===
 +
 +
<syntaxhighlight lang="python">
 +
#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de 20min.ch
 +
 +
import mechanize
 +
 +
import lxml.html as lh
 +
 +
import cssselect
 +
 +
import ssl
 +
 +
import os
 +
 +
from urllib.parse import urlparse
 +
 +
 +
def getSrcFromURL(url):
 +
    data = br.open(url)
 +
 +
    rawdata = data.read()
 +
    unicode = rawdata.decode('utf-8', 'ignore')
 +
    src = lh.fromstring(unicode)
 +
    return src
 +
 +
def getResults(src, selecteur):
 +
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
 +
    results = src.xpath(chemin_xpath)
 +
    return results
 +
 +
#initialisation d'un objet "navigateur" avec la librairie mechanize
 +
br = mechanize.Browser()
 +
 +
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 +
 +
br.set_handle_robots(False)
 +
#fin de la configuration de mechanize
 +
 +
try:
 +
    _create_unverified_https_context = ssl._create_unverified_context
 +
except AttributeError:
 +
    # Legacy Python that doesn't verify HTTPS certificates by default
 +
    pass
 +
else:
 +
    # Handle target environment that doesn't support HTTPS verification
 +
    ssl._create_default_https_context = _create_unverified_https_context
 +
 +
 +
 +
 +
#data = br.open('https://www.lacote.ch/articles/sports/tennis/tennis-open-d-australie-belinda-bencic-se-qualifie-pour-le-troisieme-tour-1043578', timeout=10.0)
 +
 +
src = getSrcFromURL('https://www.20min.ch/fr/suisse-romande')
 +
 +
#on convertit un sélecteur css en objets de type "cssselector"
 +
selecteurs = cssselect.parse('article a')
 +
 +
 +
for selecteur in selecteurs:
 +
    print(selecteur)
 +
    articleLinks = getResults(src, selecteur)
 +
 +
    for articleLink in articleLinks:
 +
        print (articleLink.get('href'))
 +
        src = getSrcFromURL(articleLink.get('href'))
 +
 +
        selecteursArticle = cssselect.parse('div.Article_elementTitle__3we9B h1, div.Article_elementLead__2nNxU h2, h3, div.Article_elementTextblockarray__WdRYM p, .sc-17d1f6z-1.gBPCId')
 +
 +
        for selecteurArticle in selecteursArticle:
 +
            print(selecteurArticle)
 +
            resultats = getResults(src, selecteurArticle)
 +
 +
            for resultat in resultats:
 +
                print(resultat.text_content())
 +
</syntaxhighlight>
 +
 +
=Reprise du projet de base de données de vitraux=
 +
 +
j'ai tenté de recuperer sur un site du tourisme du jura suisse les images des vitraux qui étaient présent dessus grâce au programme suivant.
 +
 +
<syntaxhighlight lang="python">
 +
#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de lecourrier.ch
 +
#article h1, article h2, article h3, article p et article time
 +
 +
import mechanize
 +
 +
import lxml.html as lh
 +
 +
import cssselect
 +
 +
import ssl
 +
 +
import os
 +
 +
from urllib.parse import urlparse
 +
 +
import json
 +
 +
import re
 +
 +
def getSrcFromURL(url):
 +
    data = br.open(url)
 +
 +
    rawdata = data.read()
 +
    unicode = rawdata.decode('utf-8', 'ignore')
 +
    src = lh.fromstring(unicode)
 +
    return src
 +
 +
def getResults(src, selecteur):
 +
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
 +
    results = src.xpath(chemin_xpath)
 +
    return results
 +
 +
#initialisation de l'objet db, interface avec la base de données mysql
 +
db = mysql.connect(
 +
    host = "localhost",
 +
    user = "root",
 +
    passwd = "root",
 +
    database = "Vitrail"
 +
)
 +
 +
#SELECT = sélectionner des données
 +
#INSERT = insérer des données
 +
#UPDATE = mettre à jour des données
 +
#DELETE = supprimer des données
 +
 +
#initialisation d'un objet "navigateur" avec la librairie mechanize
 +
br = mechanize.Browser()
 +
 +
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 +
 +
br.set_handle_robots(False)
 +
#fin de la configuration de mechanize
 +
 +
try:
 +
    _create_unverified_https_context = ssl._create_unverified_context
 +
except AttributeError:
 +
    # Legacy Python that doesn't verify HTTPS certificates by default
 +
    pass
 +
else:
 +
    # Handle target environment that doesn't support HTTPS verification
 +
    ssl._create_default_https_context = _create_unverified_https_context
 +
 +
 +
 +
src = getSrcFromURL('https://www.j3l.ch/fr/Z10792/vitraux_1552925653?bounds=6.84388+47.02175+7.46940+47.50228')
 +
 +
 +
#on convertit un sélecteur css en objets de type "cssselector"
 +
selecteurs = cssselect.parse('#list-data')
 +
 +
selecteursImages = cssselect.parse('div.Image img')
 +
 +
i = 0
 +
 +
for selecteur in selecteurs:
 +
 +
    print(selecteur)
 +
   
 +
    resultats = getResults(src, selecteur)
 +
 +
    for resultat in resultats:
 +
      data = json.loads(resultat.text_content())
 +
      for element in data['features']:
 +
           
 +
            print(element['properties']['link'])
 +
 +
            elementSrc = getSrcFromURL('https://www.j3l.ch'+element['properties']['link'])
 +
 +
            selecteurs2 = cssselect.parse('div.richtext p, ul.m-fact-list__list__list li')
 +
            selecteursImages = cssselect.parse('div.swiper-wrapper div div.Image img')
 +
 +
            for selecteur2 in selecteurs2:
 +
                print(selecteur2)
 +
                resultats2 = getResults(elementSrc, selecteur2)
 +
                for resultat2 in resultats2:
 +
                    print(resultat2.text_content())
 +
 +
            for selecteur in selecteursImages:
 +
                print(selecteur)
 +
                chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
 +
                resultats = elementSrc.xpath(chemin_xpath)
 +
               
 +
                for resultat in resultats:
 +
                   
 +
                    l = resultat.get('data-sizes')
 +
                    sizes = l.split(' ')
 +
                    size = sizes[0]
 +
                    imageUrl = re.sub(r'[0-9]+x[0-9]+:', '', size)
 +
                    print('downloading'+imageUrl)
 +
                    filename = 'img'+str(i)+'.jpg'
 +
                    data = br.open(imageUrl).read()
 +
 +
                    save = open(filename, 'wb')
 +
                    save.write(data)
 +
                    save.close()
 +
                   
 +
                    i = i + 1
 +
                    break
 +
 +
 +
                    cursor = db.cursor()
 +
                    cursor.execute(query)
 +
                    db.commit()
 +
</syntaxhighlight>
 +
 +
===résumé du projet===
 +
Le but avec ce programme étant de pouvoir rentrer les images dans une base de données afin de pouvoir grâce à un réseau de neurones, créer un vitrail médian entre toute les entrées.
 +
Le choix au début se portait sur la base de données des vitraux de France sur le site des monuments français. Malheureusement, ce fut impossible de pouvoir accéder à la suite du site et nous n'arrivions qu'a récupérer les quelques images de la première page.
 +
C'est pourquoi nous avons finalement fait le choix de partir sur le site du tourisme du jura suisse qui référence lui aussi ses vitraux. l'autre problème c'est que la base de données est pauvre et n'est composée que d'une vingtaine d'entrée différente. Je ne sais pas si ça aurait suffit pour qu'un réseau de neurones produise quelque chose avec le deep learning.

Version actuelle datée du 24 avril 2021 à 13:06

page de code premier quadri B2 de simon

scénario binaire python

Un programme qui replacerait les vers dans un ordre aléatoire de sorte à afficher à chaque fois une nouvelle version de la poésie

La voiture bouge

Le pied crisse

Le ceval rose

Perdant son ame

Qu'etait la vie

Le flux cosmique

La nuit est loin,

Le ciel est gris

Je suis tombee

resolution du problème de Max farré

Ce programme génère aléatoirement deux vers en fonction de l'âge de du nom de l'utilisateur. Si le poème est validé par l'utilisateur, il reçoit un bisous sinon le programme lui indique sa tristesse.

-->réponse

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import string
import unicodedata

with open ('poeme','r') as tete:
	poeme = tete.read()

lignes = poeme.splitlines()

print("Quel est ton nom ?")

nom = raw_input("entrez votre nom : ")
nom = unicodedata.normalize('NFD',unicode(nom,'utf-8')).encode('ascii','ignore')
nom = nom.lower()
asciiChars = list(string.ascii_lowercase)

nombreNom = 0

for compteur in range(0,len(nom)):
	searchLigne = nom[compteur]
	for compteur2 in range(0,len(asciiChars)):
		laLigneQuonRegarde = asciiChars[compteur2]
		if(laLigneQuonRegarde == searchLigne):
			nombreNom = nombreNom + compteur2
			break
nombreNom = nombreNom % len(lignes)

print("Quel est ton âge ?")

age = input("entrez votre age : ")

age = age % len(lignes)


print(lignes[nombreNom])
print(lignes[age])
print('Cela vous convient ?\nOui/Non')

choix = raw_input()

if(choix == "Oui"):
	print('trop bien :-* <3')
if(choix == "Non"):
	print(":'-( snif snif")

sélection de poème

poème qui mélange les vers

poème original :

La voiture roule

Le pied crisse

Le ceval rose

Perdant son ami

Qu'etait la vie

Le flux cosmique

La nuit est loin,

Le ciel est gris

Je suis tombee

Tout en hauteur

5lK5J 8.21JsMc1Js

j'aime la nuit

Il saigne peu,

Et s'Vk va tot

Un jour se leve

Les oiseaux chantent


nouveau poème, nouveau sens :

5lK5J 8.21JsMc1Js

Perdant son ami

Il saigne peu

Les oiseaux chantent

Je suis tombee

Et s'Vk va tot

Tout en hauteur

Qu'etait la vie

Le flux cosmique

Un jour se leve

Le ceval rose

Le ciel est gris

La nuit est loin

Le pied crisse

j'aime la nuit

La voiture roule


sélection de deux vers en fonction du nom et de l'âge de l'interrogé

poème original :

La voiture roule

Le pied crisse

Le ceval rose

Perdant son ami

Qu'etait la vie

Le flux cosmique

La nuit est loin,

Le ciel est gris

Je suis tombee

Tout en hauteur

5lK5J 8.21JsMc1Js

j'aime la nuit

Il saigne peu,

Et s'Vk va tot

Un jour se leve

Les oiseaux chantent

sélection :

Quel est ton nom ?

entrez votre nom : simon

Quel est ton âge ?

entrez votre age : 23

Le pied crisse

Le ciel est gris

Cela vous convient ?

Oui/Non

Oui

trop bien :-* <3

page de code de simon deuxième quadri B2

création de bot

petit scénario de bot

premier exemple

création d'un bot sur twitter qui DM trump pour l'instulter sur la base d'un "you" et ensuite un adjectif suivi d'une insulte

les adjectifs seront trouvés sur https://englishgrammarhere.com/adjectives/negative-personality-adjectives-list-in-english/ et les insultes seront trouvées sur http://www.insult.wiki/wiki/Insult_List

le bot lui enverra un message à chaque nouveau tweet ou alors un par jour

deuxième exemple

création d'un bot qui rechercherait sur google "florida man" plus une date jusqu'a faire une année entière il selectionnerais toujours dans les mots "arrested" ou alors "try to"

exemple un bot qui retweetait tout article en lien avec florida man https://twitter.com/_FloridaMan

explication de la trend florida man https://en.wikipedia.org/wiki/Florida_Man

"update du scénario" scénario qui renviendrait à poster tous les jours une citation d'un livre (en l'occurence la pierre et le sabre de Eiji Yoshikawa) et de la faire sous titrer par le nom d'un dirigeant de l'URSS. Une parodie de compte de citation de gens célèbre en somme

schema de bot

+----------------------+          +-----------------------------+
|                      |          |se rend sur la page wikipédia|
| lancement du script  +--------->+"liste des dirigeants        |
|                      |          |de l'union so^iétique"       |
|                      |          +--------------------------+--+
+----------+-----------+                                     |
           |                                                 |
           |                                                 v
           v                                  +--------------+----------+
+----------+------------+                     |selectionne aléatoirement|
|se rend sur l'onglet   |                     |un nom/prénom de         |
|citation du livre      |                     |dirigeant de l'URSS      |
|"la pierre et le sabre"|                     +--------------------+----+
|sur le site babelio    |                                          |
+-----------+-----------+                                          |
            |                                                      |
            v                                                      |
 +----------+----------+                                           |
 |sélectionne          |                                           v
 |aléatoirement une    |                       +-------------------+-------+
 |citation du livre    |                       |sous-titre la citation avec|
 |parmis celles postées+---------------------->+le nom et le prénom d'un   |
 +---------------------+                       |dirigeant de l'URSS        |
                                               +-------+-------------------+
        XXXXXXXXXXXXXXXXXXXXXXXXXX                     |
    XXXX                          XXXX                 |
  XXX     XXX   Bidule machin        XXX               v
  X      X   X  @superbidule           X           +---+--------+
 XX     X     X                        XX  <-------+poste sur   |
 X       X   X                          X          |twitter sous|
 X        XXX                           X  <-------+cette forme |
 X             "citation de la pierre   X          +------------+
 X             et le sabre"             X
 X                                      X
 X                                      X
 XX     - un dirigeant de l'URSS       XX
  XX                                  XX
   XXXX                            XXXX
       XXXXXXXXXXXXXXXXXXXXXXXXXXXX


page de code premier quadri de B3 de simon

base de données

https://www.animecharactersdatabase.com/

Base de données regroupant les personnages de divers production d'animation japonaise pour les fans plus ou moins hardcore. Des classements par tags décrivant visuellement les personnages sont présent. des tests pour affiner les "catégorisations" sont mis en oeuvre et des classements hiérarchiques selon les utilisateurs sont aussi de mise. C'est un site de plus ou moins mauvais gouts.


https://untappd.com/

Mélange entre base de données et réseau social. Nécessite une inscription pour l'utilisation et le marketing de l'application (car c'est aussi et surtout une application sur smartphone) suggère une application sociale avec leur slogan "Drink Socially". Le site est de même nature que google avis, trip advisor, yelp ou tout autre service de conseil entre utilisateur et où ces derniers s'improvise spécialiste. celui-ci est spécialisé dans le référencement de bar/brasserie/bière et donc de leurs catégorisation. Les tenanciers des bars et des brasserie peuvent y entrer leurs produits avec toutes les caractéristiques (degrés d'alcool, niveau d'amertume, houblon et malt utilisé, etc...) et les utilisateurs peuvent les noter et les reclasser en fonction de leurs appréciations.


https://www.facebook.com/groups/Glitchcollective

Page sur laquelle est publié toute sorte d'oeuvre produite par des artistes se revendiquant du courant numérique du Glitch. Cette page se traduit maintenant en regroupement de contenu artistique numérique. C'est plus du partage de contenu que réellement une base de données. Mais c'est une base de donnée classé par artistes et par dates qui se présente devant nous sans qualification concrète du contenu excepté le fait que les artistes se revendique du même courant.


https://feu.ultravnr.be/

Site regroupant les événements à venir sur Bruxelles et les expositions. Les événements sont annoncés et classé sur la page de manière chronologique mais des catégories d'événements sont aussi présentes ce qui permet de faire quelques recherches pour trouver quelque chose de plus précis que juste un événements (type soirée, workshop, expo, cours etc..). Le site n'est malheureusement plus actif depuis juin apparement mais les archives sont toujours là pour montrer ce qu'il y a eu auparavant.

Schéma

Schéma Simon.png

Schéma du script

Schema simon 3.png

Script journalistique Mondher 2eme quadri

le matin

#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de lematin.ch
 
import mechanize
 
import lxml.html as lh
 
import cssselect
 
import ssl

import os

from urllib.parse import urlparse

 
def getSrcFromURL(url):
    data = br.open(url)

    rawdata = data.read()
    unicode = rawdata.decode('utf-8', 'ignore')
    src = lh.fromstring(unicode)
    return src 

def getResults(src, selecteur):
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
    results = src.xpath(chemin_xpath)
    return results

#initialisation d'un objet "navigateur" avec la librairie mechanize
br = mechanize.Browser()
 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 
br.set_handle_robots(False)
#fin de la configuration de mechanize
 
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context



 
#data = br.open('https://www.lacote.ch/articles/sports/tennis/tennis-open-d-australie-belinda-bencic-se-qualifie-pour-le-troisieme-tour-1043578', timeout=10.0)

src = getSrcFromURL('https://www.lematin.ch/')
 
#on convertit un sélecteur css en objets de type "cssselector"
selecteurs = cssselect.parse('article a')
 

for selecteur in selecteurs:
    print(selecteur)
    articleLinks = getResults(src, selecteur)

    for articleLink in articleLinks:
        print (articleLink.get('href'))
        src = getSrcFromURL(articleLink.get('href'))

        selecteursArticle = cssselect.parse('div.Article_elementTitle__3we9B h1, div.Article_elementLead__2nNxU h2, h3, div.Article_elementTextblockarray__WdRYM p, .sc-17d1f6z-1.gBPCId')

        for selecteurArticle in selecteursArticle:
            print(selecteurArticle)
            resultats = getResults(src, selecteurArticle)

            for resultat in resultats:
                print(resultat.text_content())

20 minutes

#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de 20min.ch
 
import mechanize
 
import lxml.html as lh
 
import cssselect
 
import ssl

import os

from urllib.parse import urlparse

 
def getSrcFromURL(url):
    data = br.open(url)

    rawdata = data.read()
    unicode = rawdata.decode('utf-8', 'ignore')
    src = lh.fromstring(unicode)
    return src 

def getResults(src, selecteur):
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
    results = src.xpath(chemin_xpath)
    return results

#initialisation d'un objet "navigateur" avec la librairie mechanize
br = mechanize.Browser()
 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 
br.set_handle_robots(False)
#fin de la configuration de mechanize
 
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context



 
#data = br.open('https://www.lacote.ch/articles/sports/tennis/tennis-open-d-australie-belinda-bencic-se-qualifie-pour-le-troisieme-tour-1043578', timeout=10.0)

src = getSrcFromURL('https://www.20min.ch/fr/suisse-romande')
 
#on convertit un sélecteur css en objets de type "cssselector"
selecteurs = cssselect.parse('article a')
 

for selecteur in selecteurs:
    print(selecteur)
    articleLinks = getResults(src, selecteur)

    for articleLink in articleLinks:
        print (articleLink.get('href'))
        src = getSrcFromURL(articleLink.get('href'))

        selecteursArticle = cssselect.parse('div.Article_elementTitle__3we9B h1, div.Article_elementLead__2nNxU h2, h3, div.Article_elementTextblockarray__WdRYM p, .sc-17d1f6z-1.gBPCId')

        for selecteurArticle in selecteursArticle:
            print(selecteurArticle)
            resultats = getResults(src, selecteurArticle)

            for resultat in resultats:
                print(resultat.text_content())

Reprise du projet de base de données de vitraux

j'ai tenté de recuperer sur un site du tourisme du jura suisse les images des vitraux qui étaient présent dessus grâce au programme suivant.

#un programme qui récupère les données contenues dans les sélecteurs css suivants à partir d'une page d'article de lecourrier.ch
#article h1, article h2, article h3, article p et article time 
 
import mechanize
 
import lxml.html as lh
 
import cssselect
 
import ssl
 
import os
 
from urllib.parse import urlparse

import json

import re

def getSrcFromURL(url):
    data = br.open(url)
 
    rawdata = data.read()
    unicode = rawdata.decode('utf-8', 'ignore')
    src = lh.fromstring(unicode)
    return src
 
def getResults(src, selecteur):
    chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
    results = src.xpath(chemin_xpath)
    return results

#initialisation de l'objet db, interface avec la base de données mysql
db = mysql.connect(
    host = "localhost",
    user = "root",
    passwd = "root",
    database = "Vitrail"
)
 
#SELECT = sélectionner des données
#INSERT = insérer des données
#UPDATE = mettre à jour des données
#DELETE = supprimer des données

#initialisation d'un objet "navigateur" avec la librairie mechanize
br = mechanize.Browser()
 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 
br.set_handle_robots(False)
#fin de la configuration de mechanize
 
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context
 


src = getSrcFromURL('https://www.j3l.ch/fr/Z10792/vitraux_1552925653?bounds=6.84388+47.02175+7.46940+47.50228') 
 
 
#on convertit un sélecteur css en objets de type "cssselector"
selecteurs = cssselect.parse('#list-data')
 
selecteursImages = cssselect.parse('div.Image img')
 
i = 0

for selecteur in selecteurs:

    print(selecteur)
    
    resultats = getResults(src, selecteur)

    for resultat in resultats:
       data = json.loads(resultat.text_content())
       for element in data['features']:
            
            print(element['properties']['link'])

            elementSrc = getSrcFromURL('https://www.j3l.ch'+element['properties']['link'])

            selecteurs2 = cssselect.parse('div.richtext p, ul.m-fact-list__list__list li')
            selecteursImages = cssselect.parse('div.swiper-wrapper div div.Image img')
 
            for selecteur2 in selecteurs2:
                print(selecteur2)
                resultats2 = getResults(elementSrc, selecteur2)
                for resultat2 in resultats2:
                    print(resultat2.text_content())

            for selecteur in selecteursImages:
                print(selecteur)
                chemin_xpath = cssselect.HTMLTranslator().selector_to_xpath(selecteur, translate_pseudo_elements=True)
                resultats = elementSrc.xpath(chemin_xpath)
                
                for resultat in resultats:
                    
                    l = resultat.get('data-sizes')
                    sizes = l.split(' ')
                    size = sizes[0] 
                    imageUrl = re.sub(r'[0-9]+x[0-9]+:', '', size)
                    print('downloading'+imageUrl)
                    filename = 'img'+str(i)+'.jpg'
                    data = br.open(imageUrl).read()
 
                    save = open(filename, 'wb')
                    save.write(data)
                    save.close()
                    
                    i = i + 1
                    break


                    cursor = db.cursor()
                    cursor.execute(query)
                    db.commit()

résumé du projet

Le but avec ce programme étant de pouvoir rentrer les images dans une base de données afin de pouvoir grâce à un réseau de neurones, créer un vitrail médian entre toute les entrées. Le choix au début se portait sur la base de données des vitraux de France sur le site des monuments français. Malheureusement, ce fut impossible de pouvoir accéder à la suite du site et nous n'arrivions qu'a récupérer les quelques images de la première page. C'est pourquoi nous avons finalement fait le choix de partir sur le site du tourisme du jura suisse qui référence lui aussi ses vitraux. l'autre problème c'est que la base de données est pauvre et n'est composée que d'une vingtaine d'entrée différente. Je ne sais pas si ça aurait suffit pour qu'un réseau de neurones produise quelque chose avec le deep learning.