{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Je reviens \u00e0 Ameli-direct et [mon post pr\u00e9c\u00e9dent](http://nbviewer.ipython.org/urls/raw.github.com/flothesof/posts/master/Parsing%2520ameli-direct.ipynb). Lors de l'\u00e9criture de celui-ci, je n'avais pas enti\u00e8rement saisi par quelle proc\u00e9dure se faisait l'obtention de l'url qui permettait d'acc\u00e9der aux informations des m\u00e9decins. Lors d'une recherche sur le site, FireBug affiche la chose suivante dans l'onglet script.\n", "\n", "![image](files/files/ameli_scripts.png)\n", "\n", "J'en d\u00e9duis qu'il faut imiter ces deux \u00e9tapes afin de pouvoir r\u00e9cup\u00e9rer l'url avec les d\u00e9tails sur les m\u00e9decins. La premi\u00e8re \u00e9tape est une requ\u00eate post qui est d\u00e9finie dans la form pr\u00e9sente sur la page et envoy\u00e9e quand on clique sur le bouton *rechercher* d\u00e9fini par la classe *input*. En simplifiant, cela donne le code suivant :" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La form contient donc directement l'url \u00e0 envoyer au serveur. Cette url retourne une r\u00e9ponse :\n", "\n", "![r\u00e9ponse](files/files/ameli_reponse_post.png)\n", "\n", "C'est cette r\u00e9ponse qui est appel\u00e9e \u00e0 l'aide du *GET* que l'on a d\u00e9j\u00e0 vu plus haut. C'est elle qui contient le HTML avec les informations sur les m\u00e9decins.\n", "\n", "![r\u00e9ponse GET](files/files/ameli_get.png)\n", "\n", "Dans la suite, nous allons essayer d'imiter la d\u00e9marche :\n", "\n", "- requ\u00eate POST pour obtenir l'url\n", "- req\u00fbete GET pour charger l'url avec les informations" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Requ\u00eate POST" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tout d'abord, r\u00e9cup\u00e9rons la page web de d\u00e9part." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "source = urllib2.urlopen('http://ameli-direct.ameli.fr/').read()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cherchons la pr\u00e9sence de la form et de l'url qu'elle contient." ] }, { "cell_type": "code", "collapsed": false, "input": [ "ind = source.find('