Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] Comment récupérer une page web dynamique?


Le 03/01/2017 à 20:53, Peko a écrit :
>
> Je cherche à récupérer en traitement par lot et ligne de commande des 
> pages web dont le contenu est généré dynamiquement, résultant par 
> exemple de programmes php.
>
> Autrefois, pour les pages statiques, [wget] ou [curl] faisaient bien 
> l'affaire.
>
> Apparemment, [httrack] serait l'outil qu'il me faut.
>
> Puis-je avoir votre avis et expérience?
>

Bonjour Papa, bonjour la liste,

Mes meilleurs vœux à tous et longue vie à léa (et à sa mitre)
Peko, tu veux quoi, le code des pages ou juste un screenshot (i.e. un jpg) ?
J'ai fait des trucs comme ça il y a quelque temps, en utilisant surtout 
la bibliothèque QWebView pour Python (PyQt4 : QtCore, QtGui, QtWebkit), 
mais c'est un peu lourd (mais rien n'arrête papa ;-)).et ça ne se 
justifie que si tu veux faire un outil récurrent qui ramène tout ce 
qu'il faut (le code et un screenshot)
Sinon, regarde du côté de Phantom JS, c'est plus simple à mettre en œuvre.
@+
Dominique

PS : exemple de classe en Python :
--------------------
class Screenshot(QWebView):
     def __init__(self):
         self.app = QApplication(sys.argv)
         QWebView.__init__(self)
         self._loaded = False
         self.loadFinished.connect(self._loadFinished)

     def capture(self, inUrl, output_file):
         url = u"http://%s" % inUrl if u"http" not in inUrl else inUrl
         self.load(QUrl(url))
         self.wait_load()
         # set to webpage size
         frame = self.page().mainFrame()
         self.page().setViewportSize(frame.contentsSize())
         # render image
         image = QImage(self.page().viewportSize(), QImage.Format_ARGB32)
         painter = QPainter(image)
         frame.render(painter)
         painter.end()
         print 'saving', output_file
         image.save(output_file)

     def wait_load(self, delay=0):
         # process app events until page loaded
         while not self._loaded:
             self.app.processEvents()
             time.sleep(delay)
         self._loaded = False

     def _loadFinished(self, result):
--------------------

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons