From c9bf6ff6b4abdb0fd8775830d81936b511223ede Mon Sep 17 00:00:00 2001
From: Alessandro Cerioni <acerioni@grandlyon.com>
Date: Tue, 2 Jul 2019 18:14:34 +0200
Subject: [PATCH] Adding HTTP(S) proxies

---
 9_The_chase.ipynb | 83 +++++++++++++++++++++++++++--------------------
 1 file changed, 48 insertions(+), 35 deletions(-)

diff --git a/9_The_chase.ipynb b/9_The_chase.ipynb
index beb7198..243ebc1 100644
--- a/9_The_chase.ipynb
+++ b/9_The_chase.ipynb
@@ -34,7 +34,9 @@
   {
    "cell_type": "code",
    "execution_count": 1,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "url = \"https://download.data.grandlyon.com/wfs/rdata?SERVICE=WFS&VERSION=2.0.0&request=GetFeature&typename=jcd_jcdecaux.jcdvelov&outputFormat=application/json;%20subtype=geojson&SRSNAME=EPSG:2154&count=500&startIndex=1\""
@@ -49,45 +51,38 @@
    "outputs": [],
    "source": [
     "import requests\n",
-    "#help(requests)"
+    "\n",
+    "proxies = {\n",
+    "    'http': 'http://proxyhttp1pro:8080',\n",
+    "    'https': 'http://proxyhttp1pro:8080'\n",
+    "}\n",
+    "\n",
+    "s = requests.Session()"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 5,
    "metadata": {
     "collapsed": true
    },
    "outputs": [],
    "source": [
-    "response = requests.get(url)"
+    "s.proxies = proxies"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import pickle\n",
-    "#with open('response.pkl', 'wb') as fp:\n",
-    "#    pickle.dump(response, fp)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [],
    "source": [
-    "#del response\n",
-    "with open('response.pkl', 'rb') as fp:\n",
-    "    response = pickle.load(fp)"
+    "response = s.get(url)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [
     {
@@ -128,8 +123,10 @@
        " '__weakref__',\n",
        " '_content',\n",
        " '_content_consumed',\n",
+       " '_next',\n",
        " 'apparent_encoding',\n",
        " 'close',\n",
+       " 'connection',\n",
        " 'content',\n",
        " 'cookies',\n",
        " 'elapsed',\n",
@@ -153,7 +150,7 @@
        " 'url']"
       ]
      },
-     "execution_count": 6,
+     "execution_count": 7,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -164,7 +161,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -173,7 +170,7 @@
        "200"
       ]
      },
-     "execution_count": 7,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -184,7 +181,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 9,
    "metadata": {
     "collapsed": true
    },
@@ -195,16 +192,16 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 10,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "{'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept', 'Connection': 'close', 'Content-Type': 'application/json; subtype=geojson', 'Transfer-Encoding': 'chunked', 'Server': 'Apache', 'Date': 'Wed, 15 May 2019 11:58:56 GMT', 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS,DELETE,PUT', 'Access-Control-Allow-Origin': '*'}"
+       "{'Content-Type': 'application/json; subtype=geojson', 'Server': 'Apache', 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS,DELETE,PUT', 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept', 'Transfer-Encoding': 'chunked', 'Date': 'Tue, 02 Jul 2019 16:13:44 GMT', 'Connection': 'close', 'Access-Control-Allow-Origin': '*'}"
       ]
      },
-     "execution_count": 9,
+     "execution_count": 10,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -388,7 +385,9 @@
   {
    "cell_type": "code",
    "execution_count": 18,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "#data['features']"
@@ -542,7 +541,9 @@
   {
    "cell_type": "code",
    "execution_count": 22,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "# initialisation\n",
@@ -1117,7 +1118,9 @@
   {
    "cell_type": "code",
    "execution_count": 32,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "geometry_df = pd.DataFrame.from_records(df0['geometry'])"
@@ -1133,7 +1136,9 @@
   {
    "cell_type": "code",
    "execution_count": 33,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "df1['x'] = geometry_df.coordinates.apply( lambda row: row[0] )\n",
@@ -2257,7 +2262,9 @@
   {
    "cell_type": "code",
    "execution_count": 42,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "X0 = 843968.3\n",
@@ -2267,7 +2274,9 @@
   {
    "cell_type": "code",
    "execution_count": 43,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "import math\n",
@@ -2303,7 +2312,9 @@
   {
    "cell_type": "code",
    "execution_count": 45,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "df1['distance_from_here'] = df1.apply( lambda row: Euclidean_distance( (row.x, row.y), (X0, Y0)), axis=1 )"
@@ -2337,7 +2348,9 @@
   {
    "cell_type": "code",
    "execution_count": 47,
-   "metadata": {},
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [],
    "source": [
     "data['features'].sort(key=lambda x: x['properties']['available_bikes'], reverse=True)"
-- 
GitLab