Afnarel's blog
  • Home
  • Thoughts
  • Categories
  • Tags
  • Archives

Cocktails de mechanize, webbrowser et PIL

Aujourd'hui, j'avais besoin de récupérer une liste de cocktails. J'en ai trouvé une assez jolie sur ce site mais avec un cocktail par page. Du coup, comme j'avais du temps à perdre (:p), j'ai décidé d'écrire un petit script pour les récupérer sous forme d'images de même taille. Comme je pense que c'est un script intéressant qui utilise 3 modules différents (mechanize pour récupérer les liens des différentes pages, webbrowser pour les ouvrir dans un navigateur et le module ImageGrab de la Python Imaging Library pour faire les captures d'écran) de manière plutôt compacte, je le publie. Je suis sûr qu'il y a des méthodes plus simples et plus propres de faire ça et je serais intéressé de les connaître. J'ai seulement pris la première solution qui m'est venue à l'esprit.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# -*- coding:utf-8 -*-

from PIL import ImageGrab
import time
from mechanize import mechanize
import webbrowser

def grab_screen(filename):
  image = ImageGrab.grab((20,210,600,500))
  image.save(filename + '.png')

def get_cocktails():
  BASE = 'http://www.iba-world.com'
  LIKE = '/index.php?option=com_content&id='
  url = 'http://www.iba-world.com/index.php?option=com_content&view=article&id=88&Itemid=532#'
  browser = mechanize.Browser()
  page = browser.open(url)
  #print page.read()
  print dir(browser)
  for l in browser.links():
    if l.url.startswith(LIKE):
      page_url = BASE + l.url
      num = l.url[len(LIKE):]
      num = num[:num.index('&')]
      print num, page_url
      webbrowser.open_new_tab(page_url)
      time.sleep(5)
      grab_screen(num)

if __name__ == '__main__':
  get_cocktails()

Pour l'utiliser, il faut adapter les coordonnées de la zone à capturer en fonction de votre navigateur.

Le code est ici et les images récupérées sont là.


  • « ifttt
  • Journal... »

Published

Jan 13, 2012

Category

Computer Science

Tags

  • pelican 2
  • publishing 1

Contact

  • Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
  • Powered by Pelican. Theme: Elegant