{ "metadata": { "layout": "post", "name": "", "post": { "cover": "images/sneeze.jpg", "coveralt": "CC BY-NC-ND foshydog@flickr", "tags": [ "python", "notebook" ], "title": "Counting Sneezes from the Web" }, "signature": "sha256:0527d6e0ab33813b4cbc2b8310c6c960bb213ccf75f8dfccb2ab98b6038bce6f" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The [sneeze count](http://sneezecount.joyfeed.com/) website catalogues one person's sneezes since 2007. A work colleague asked how difficult it would be to extract a list of timestamps from the site. Could we then plot sneezes over time? This post shows how easy this is to do using Python.\n", "\n", "# Fetching the data\n", "\n", "Conveniently there is an RSS feed available for the site which can be fetched via Python's built in [urlopen](https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen) function:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from urllib.request import urlopen\n", "print('...')\n", "print('\\n'.join(urlopen('http://sneezecount.joyfeed.com/feed').read().decode('utf8').splitlines()[20:30]))\n", "print('...')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "...\n", "\t\n", "\t\tFour thousand and nineteen\n", "\t\thttp://sneezecount.joyfeed.com/four-thousand-and-nineteen/\n", "\t\thttp://sneezecount.joyfeed.com/four-thousand-and-nineteen/#comments\n", "\t\tFri, 22 Aug 2014 12:41:25 +0000\n", "\t\t\n", "\t\t\t\t\n", "\n", "\t\thttp://sneezecount.joyfeed.com/?p=8608\n", "\t\t" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "...\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is also a ``paged`` query parameter whch lets one get the next page of results:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from urllib.request import urlopen\n", "print('...')\n", "print('\\n'.join(urlopen('http://sneezecount.joyfeed.com/feed?paged=2').read().decode('utf8').splitlines()[20:30]))\n", "print('...')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "...\n", "\t\n", "\t\tFour thousand and nine\n", "\t\thttp://sneezecount.joyfeed.com/four-thousand-and-nine/\n", "\t\thttp://sneezecount.joyfeed.com/four-thousand-and-nine/#comments\n", "\t\tSat, 09 Aug 2014 17:09:39 +0000\n", "\t\t\n", "\t\t\t\t\n", "\n", "\t\thttp://sneezecount.joyfeed.com/?p=8587\n", "\t\t" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "...\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python also has a built in XML parsing module, the [ElementTree](https://docs.python.org/3/library/xml.etree.elementtree.html) module. Usage is, *ahem*, elementary:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import xml.etree.ElementTree as ET\n", "\n", "def parse_xml_url(url):\n", " tree = ET.parse(urlopen(url))\n", " return tree.getroot()\n", "\n", "root = parse_xml_url('http://sneezecount.joyfeed.com/feed?paged=2')\n", "print(root)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "An RSS feed encodes each post with an ``item`` tag and each publication date within the item as a ``pubDate``. A quick and dirty hack to extract all dates from an RSS feed is simply to list all the ``pubDate`` elements. According to [WordPress's documentation](http://codex.wordpress.org/WordPress_Feeds#RSS_feed_time_and_date_format), the ``pubDate`` tages are RFC822 dates. Python has a module to deal with that too! The [email.utils](https://docs.python.org/2/library/email.util.html) module has a ``parsedate`` function. The value can be passed directly to ``time.mktime()`` to get a timestamp." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from email.utils import parsedate\n", "import time\n", "\n", "def extract_dates(root):\n", " return list(time.mktime(parsedate(elem.text)) for elem in root.iter('pubDate'))\n", "\n", "print(', '.join(str(t) for t in extract_dates(root)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1407600579.0, 1407520308.0, 1407389858.0, 1407381140.0, 1407344647.0, 1407255800.0, 1407141500.0, 1407069426.0, 1407009164.0, 1406970003.0\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get dates for a given feed, therefore, we need simply page through the feed starting at page 1 until we get a result with no items." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from urllib.parse import urljoin\n", "from urllib.request import HTTPError\n", "\n", "def dates_from_feed_url(url):\n", " paged = 0\n", " all_dates = []\n", " while True:\n", " paged += 1\n", " page_url = urljoin(url, '?paged={0}'.format(paged))\n", " try:\n", " dates = extract_dates(parse_xml_url(page_url))\n", " except HTTPError:\n", " # Interpret a HTTP error (e.g. 404) as us reaching the end of the list\n", " break\n", " all_dates.extend(dates)\n", " if len(dates) == 0:\n", " break\n", " return all_dates\n", "\n", "# Test with a feed URL for a single month:\n", "ts = dates_from_feed_url('http://sneezecount.joyfeed.com/2014/08/feed')\n", "print(', '.join(str(t) for t in ts))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1408707685.0, 1408628545.0, 1408563641.0, 1408537639.0, 1408439866.0, 1408275986.0, 1408256591.0, 1408167669.0, 1408131465.0, 1407820127.0, 1407600579.0, 1407520308.0, 1407389858.0, 1407381140.0, 1407344647.0, 1407255800.0, 1407141500.0, 1407069426.0, 1407009164.0, 1406970003.0, 1406870597.0\n" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can get all dates for all time by using the full feed URL:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "timestamps = dates_from_feed_url('http://sneezecount.joyfeed.com/feed')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we look at the first page of the website, as of writing there are four thousand and nineteen sneezes. Let's just ckeck that we've got them all:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print('Fetched {0} sneeze timestamps'.format(len(timestamps)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Fetched 4019 sneeze timestamps\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Plotting\n", "\n", "Let's use matplotlib to plot the timestamps. We first use some IPython magic to load the pylab environment:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "rcParams['figure.figsize'] = (14,9) # Set the default figure size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(timestamps, np.arange(len(timestamps)))\n", "\n", "title('Sneezes over time')\n", "xlabel('Timestamp')\n", "ylabel('Sneezes')\n", "\n", "grid('on')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nSZIkqTX/B/mTFb5YBO65AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possibly more interesting is a histogram of intervals between sneezes:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Use three hour bins out to 5 days\n", "hist(np.diff(np.asarray(timestamps) / (60*60)), bins=np.arange(0, 5*24, 3))\n", "title('Histogram of times between sneezes')\n", "xlabel('Hours')\n", "ylabel('Count')\n", "grid('on')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAIwCAYAAACx/zuEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+85Gdd3/3XkgUFkiXktncgSFlugVpaW9QC/qwrRUvV\ngq2t0LtqIlYfLXf9UatC7A+wj1tL1VbbWu1drRKtolRbbmiVG1QWrbYgyFIVU6F1wUATFAhZtFZi\ncv9xzfSc7OzZ2ezM7Mz5nufz8ZjHme/MnOtcM+ed7HzOdX2+UwAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAFzEL1d/ctuT2LI/V/1Gda7645fw+E+tbt3ojJZ7UfUDW54DAABMwtnqT513203Vz97PcU5W\n91QPWHlGu+m/Vn/2IvffU/0fV2gul+qFXX7h9KIVvheAQ2aq/3gDrNO9s8u6HFvjWPtdtaFxL8Wx\n6g9Wb72Ex+2SXZsPADtK4QRwec4vpM5WT5tdf0r1xuoD1e3Vt85u/5nZ1zsb29me2njj/rdn339H\ndUt1Yt+4X1S9o/qtfY+b/5wXVT/aWPX4QHVj9eTqP1bvr95d/dPqgfvGu6f6a9Xbqruqv1d91Ox7\n7qx++LzH73fQXD9s9nyuqt4yG/t88+f+ltlj/2J1qrG1b+5s9TXVf5495l9W11c/MXt+r6mu3ff4\nT6h+fvZcz1Sftu++mxorYHdV/636Pw94TvdWH9543ndVb6r+2L77b6h+rHrPbJwvn93+jOrm6tmz\nub559nx+ad/3vqZ6w77jn62euWTcGq/zC6q3N37vP1I9fHbfycbvcJ6L36y+/oDnVvVZ1a/Mnttt\n1d+c3X5qdvzVjd/luxuv2dyHNXL7jkaGv6vxOs19TuM1f3/1c9XHzG6fvx7zy/+sXnsJY35E9e9m\n4723kRdFLQDAIfPrLd+q9+vtFTT/sfrLs+sPaRRIVY9pcavecxuFxsnqoY03098/u++JjTefn9Qo\nZr6l+r3uWzj9Xntvxj+8+rhG4faA2c97a/WV+37ePdW/ra6ejf8/q5+e/fwTjTfZX3TBV+Hic52P\nfbGteOfff6r7Fk6/3iiE/kCjsLij+sVGv9SHVT9V/d3ZYx/VKCqeMTt++uz4f5vN7QPV42f3XT97\nrhfyosZr+Ocbhd/fbBQyVzVewzc1isXj1WMbxdhnzr73hd33+T+4+h/VdY3f1x2z5/fQ2X2/0yiA\nlo37lbPX4YbZOP+8+qHZfScbr+P/M3tN/lj1u9VHH/D8/nv1ybPrD6s+dnb9VPWh2fO/qvoz1W/P\nHlP1bdXLG4Xq1dUrqm+a3fexs+f25EZx80WN392DzvvZ1zTy96WXMObfbxRSV80unxwAAIfO2UYB\n8/59l99ubxWl7ls4va7xhvQjzhvnZIuF009Vf3Xf8RMab+SvahQJP7jvvgc3Cp39hdPpJXP/qurf\n7Du+p/rEfcdvrL523/G3Nt7gXshBc50/n3UUTn9p3/GPVv9s3/FfbxR9Vc/vvkVL1asab+If0vgd\n/fnGa3YxL2oUKXPHGqsvn9IoeN9x3uNvrr533/ee3+P0M42TZHxC9f81VrL+dPXpjdW2LmHcX23v\nd1z1yPZe55ON1/GGffe/vrHScyHvqL6s+65i1njtf6f7ZvGORtF9rPpg9/1dfWKjoKxR4Py988a7\ntfueHOUBjRWk+e9v2Zjf0CiqPuqA5wGwdbbqASx3b/WsxmrB/PK8Dt5K9CWNouJXG1u1PvsiYz+y\n+76JfmdjFeL62X237bvvfzS2Me1323nHT2i8Yf3vjVWXb2yswux3x3ljnn989WXMdV0uNrff3Te3\nxzS2++0vZj+5ekSjIHh2o8h7d+P1+EMX+Zn7X8N7Z8c3NHq2bjjvZ9xc/e8XGet1jaLkU2fXX9fY\nQvgn2ytyH7Nk3Mc0CsT5fW+t7u6+r/Pt+67/TmNV60I+r7Fd7+zs53/Cvvve2yjC9o9zdWPF7yGN\nVbH5HH6ivT8EPKaxMrd//h/ZyMfcN87m9BWz42Vjfktja+KrG6tvzz/g+QBszfFtTwDgkLpY/8Xb\n2+up+bzGysl1XfgEE+9urCLM/cHGm+TbG8XP/jf8D26xCDp/zO9qvDl9dmNV7Ktmc1iHg+Z6xwUf\nvR4Hvc7vbKz2fNkB9796dvmwxpv47+7g08U/et/1BzSKgHdVv99YBXvCAd93zwVue131jxoF5t9v\n9I19T6Po+47ZY35jybjvrL64seXzfCcP+J6DvLH63MYK5pdXL2v83i7mtxpF6xMbGbzQ/L6xvW12\n53tOI39PbryGlzLmBxv9bV9T/ZHG9tFfmH0F2AlWnADW7wsaf2Gvsepzb+NN9m/Ovu7fjvTS6m80\n3hBf3Xgz+sOzx/1Y4/Ten9joH3lRyxvmr25sK/ydRt/LX7uE+R474Pr5LjbXS3FH69uK9a8ar81n\nNoqCD2+s9DyqsXLzrMaKx4caBeTvX3CU4eMb2+uONwrN363+U+ON+7nq6xpF61XVH63+xL7nc7L7\nvmY/3yh2n9xYbXxrY4Xmqe1t7Xz9knH/eeO1nRc4f6C9PraDXOj39sBGr93DGs//XBd/HebuaRSa\n395ejh/VXg/WdzdW8+bb+h7aWFW9utH/9E8br+f+1dFlY3529bjZeHfN5nkpcwW4YhROAJfnYqco\n/9OND8Q91+gXek6jN+l3Gn+p/7nGVqWnNPpafqDxpvq/zR4zP8Par8yu/3Bjtedc4yxs//Mic/ia\nxmrXXdW/mH3v/sdcaM7n33/Q87rYXA8ae78XNc7E9/7qLyz5WcvmdlujOPr6xmvyzsb2sWONf9v+\nRmPV6L2NbXMHFZD3Nnprnl29r1Fo/Pn23rh/TvWkxvP9zcZrOu8X+tezr+9trOzUeE3e1Pjd3T27\n7ecbW+V+a3Z8z5Jx/3HjxAmvbvwe/2MjKxd6TS52W40i/tcbBfyXtXfSkot9T42tcm9vFJDzMxrO\nV8je1Djhw3c0XrO3tXdCkWc1Tv7wH9o7s96/v4QxHz87Ptd4vf5ZY/UO4Ej43sZf4/afmvVbGnv+\n39JoVn7YvvtubvzP99b2/gJV4y+BvzS77x9vcL4Au+7qxgrKY7Y9EQBgfT61sWS/v3D6jPZWuV48\nu9TY83ymsa3gZOMvUvNtB29o7y9tP97eqWcBjoI/22iqf2hjC9ebtjsdADiaNrlV72cb2zH2e017\ne+Ff32jArbG0/9LGX1LPNgqnpzbO0HNNex8g+P2NJleAo+KZjS1n72r0Bz1nu9MBgKNpm2fVe26j\nWKpxWtb/tO++2xpNox/qvqeJfdfsdoCj4kvb+wBRAGBLtnVyiL/V+DC/H1r2QAAAgG3bxorTTY0P\n4/tT+257V/f9HI2PbKw0vau97Xzz2991oUFvuOGGe9/97nevdaIAAMCk/NfGxx/cb1e6cHpG9bWN\nT1H/3X23v6Kx+vSPGlvxHt/oa7q3cSrWp86Ov7D6Jxca+N3vfnf33rvsrLZM3U033dRLXvKSbU+D\nLZMDSg7YIwuUHDAcO3bssj9PcJOF00sbBdJHND4l/YWNU44/qHGSiBqfTfG8xgcEvmz29e7ZbfMq\n6HnVSxofEvjj1as2OGcAAIAFmyyc/tIFbvveizz+m2aX872p+pi1zIjJO3ny5LanwA6QA0oO2CML\nlBywum2dHAI24tSpU9ueAjtADig5YI8sUHLA6hROAAAASyicAAAAlji27Qms0b3OqgcAABzk2LFj\ndZk1kBUnAACAJRROTMrp06e3PQV2gBxQcsAeWaDkgNUpnAAAAJbQ4wQAABwJepwAAAA2SOHEpNi/\nTMkBgxwwJwuUHLA6hRMAAMASepwAAIAjQY8TAADABimcmBT7lyk5YJAD5mSBkgNWd3zbE1inn/u5\nn1vLONdff32Pe9zj1jIWAABw+E2qx+lhD/uklQe5557/0bXX/k7vfOeta5gSAACwK1bpcZrUitMH\nPrCOFae39ZCHfNYaxgEAAKZCjxOTYv8yJQcMcsCcLFBywOoUTgAAAEtMqsep1vE5Tm/r+us/q9tv\nf9saxgIAAHaFz3ECAADYIIUTk2L/MiUHDHLAnCxQcsDqFE4AAABL6HFaoMcJAACmSI8TAADABimc\nmBT7lyk5YJAD5mSBkgNWp3ACAABYQo/TAj1OAAAwRXqcAAAANkjhxKTYv0zJAYMcMCcLlBywOoUT\nAADAEnqcFuhxAgCAKdLjBAAAsEEKJybF/mVKDhjkgDlZoOSA1SmcAAAAltDjtECPEwAATJEeJwAA\ngA1SODEp9i9TcsAgB8zJAiUHrE7hBAAAsIQepwV6nAAAYIr0OAEAAGyQwolJsX+ZkgMGOWBOFig5\nYHUKJwAAgCX0OC3Q4wQAAFOkxwkAAGCDFE5Miv3LlBwwyAFzskDJAatTOAEAACyhx2mBHicAAJgi\nPU4AAAAbpHBiUuxfpuSAQQ6YkwVKDlidwgkAAGAJPU4L9DgBAMAU6XECAADYIIUTk2L/MiUHDHLA\nnCxQcsDqFE4AAABL6HFaoMcJAACmSI8TAADABimcmBT7lyk5YJAD5mSBkgNWp3ACAABYQo/TAj1O\nAAAwRXqcAAAANkjhxKTYv0zJAYMcMCcLlBywOoUTAADAEnqcFuhxAgCAKdLjBAAAsEEKJybF/mVK\nDhjkgDlZoOSA1SmcAAAAltDjtECPEwAATJEeJwAAgA1SODEp9i9TcsAgB8zJAiUHrE7hBAAAsIQe\npwV6nAAAYIr0OAEAAGyQwolJsX+ZkgMGOWBOFig5YHUKJwAAgCU22eP0vdVnV++pPmZ223XVj1SP\nqc5Wn1/dObvv5uq51e9XX1G9enb7x1cvqT68+vHqKw/4eXqcAACAA+1qj9P3Vc8477YXVK+pnlD9\n1Oy46onVs2dfn1F9Z3tP6LuqL6keP7ucPyYAAMBGbbJw+tnq/efd9szqltn1W6rPnV1/VvXS6kON\nlai3V0+tHlldU71h9rjv3/c9sMD+ZUoOGOSAOVmg5IDVXekep+urO2bX75gdV91Q3bbvcbdVj7rA\n7e+a3Q4AAHDFHN/iz7639TQl7XNTdXJ2/drqSdWp2fHp2ddlx6Mum/9V4tSpU44dOz5kx/PbdmU+\njh073v7x3K7Mx/GVPz516tROzcfxlTk+c+ZMd945Tqlw9uzZVrHpD8A9Wb2yvZND3Fqdqm5vbMN7\nbfXR7fU6vXj29VXVC6t3zB7zh2e3/6Xq06q/eoGf5eQQAADAgXb15BAX8orqxtn1G6uX77v9OdWD\nqsc2TgLxhkaBdVej3+lY9YX7vgcWzP/SwNEmB5QcsEcWKDlgdZvcqvfSxurQR1S/Uf3dxorSyxpn\nyTvbOB151Vtnt7+1urt6XnvLR89rnI78wY3Tkb9qg3MGAABYsOmteleSrXoAAMCBDtNWPQAAgENH\n4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6nBbocQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDkgNUp\nnAAAAJbQ47RAjxMAAEyRHicAAIANUjgxKfYvU3LAIAfMyQIlB6xO4QQAALCEHqcFepwAAGCK9DgB\nAABskMKJSbF/mZIDBjlgThYoOWB1CicAAIAl9Dgt0OMEAABTpMcJAABggxROTIr9y5QcMMgBc7JA\nyQGrUzgBAAAsocdpgR4nAACYIj1OAAAAG6RwYlLsX6bkgEEOmJMFSg5YncIJAABgCT1OC/Q4AQDA\nFOlxAgAA2CCFE5Ni/zIlBwxywJwsUHLA6hROAAAAS+hxWqDHCQAApkiPEwAAwAYpnJgU+5cpOWCQ\nA+ZkgZIDVqdwAgAAWEKP0wI9TgAAMEV6nAAAADZI4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6nBbo\ncQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDkgNUpnAAAAJbQ47RAjxMAAEyRHicAAIANUjgxKfYv\nU3LAIAfMyQIlB6xO4QQAALCEHqcFepwAAGCK9DgBAABskMKJSbF/mZIDBjlgThYoOWB1CicAAIAl\n9Dgt0OMEAABTpMcJAABggxROTIr9y5QcMMgBc7JAyQGrUzgBAAAsocdpgR4nAACYIj1OAAAAG6Rw\nYlLsX6bkgEEOmJMFSg5YncIJAABgCT1OC/Q4AQDAFOlxAgAA2CCFE5Ni/zIlBwxywJwsUHLA6hRO\nAAAAS+hxWqDHCQAApkiPEwAAwAYpnJgU+5cpOWCQA+ZkgZIDVqdwAgAAWEKP0wI9TgAAMEV6nAAA\nADZI4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6nBbocQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDk\ngNUpnAAAAJbQ47RAjxMAAEyRHicAAIANUjgxKfYvU3LAIAfMyQIlB6xO4QQAALDEtnqcbq6+oLqn\n+qXqi6uHVj9SPaY6W31+dee+xz+3+v3qK6pXX2BMPU4AAMCBDluP08nqS6uPqz6muqp6TvWC6jXV\nE6qfmh1XPbF69uzrM6rvzEoZAABwBW2jALmr+lD1kOr47Ou7q2dWt8wec0v1ubPrz6peOvues9Xb\nq6dcuelymNi/TMkBgxwwJwuUHLC6bRRO76v+YfXORsF0Z2Ol6frqjtlj7pgdV91Q3bbv+2+rHnVF\nZgoAANBY8bnSPqr6qsaWvQ9U/7rR77TfvV28YemA+26aDVt1bfWk6tTs+PTs67LjUZPN/ypx6tQp\nx44dH7Lj+W27Mh/Hjh1v/3huV+bj+Mofnzp1aqfm4/jKHJ85c6Y77xynTTh79myr2MbJIZ5dfUb1\nV2bHX1h9QvW06tOr26tHVq+tPrq9XqcXz76+qnph9frzxnVyCAAA4ECH7eQQtzYKpQc3Jv306q3V\nK6sbZ4+5sXr57PorGiePeFD12Orx1Ruu4Hw5ROZ/aeBokwNKDtgjC5QcsLptbNV7S/X91RsbpyP/\nxepfVNdUL6u+pL3Tkdcoql42+3p39bzWs7QEAABwSbb1OU6bYKseAABwoMO2VQ8AAOBQUTgxKfYv\nU3LAIAfMyQIlB6xO4QQAALCEHqcFepwAAGCK9DgBAABskMKJSbF/mZIDBjlgThYoOWB1CicAAIAl\n9Dgt0OMEAABTpMcJAABggxROTIr9y5QcMMgBc7JAyQGrUzgBAAAsocdpgR4nAACYIj1OAAAAG6Rw\nYlLsX6bkgEEOmJMFSg5YncIJAABgCT1OC/Q4AQDAFOlxAgAA2CCFE5Ni/zIlBwxywJwsUHLA6hRO\nAAAAS+hxWqDHCQAApkiPEwAAwAYpnJgU+5cpOWCQA+ZkgZIDVqdwAgAAWEKP0wI9TgAAMEV6nAAA\nADZI4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6nBbocQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDk\ngNUpnAAAAJbQ47RAjxMAAEyRHicAAIANUjgxKfYvU3LAIAfMyQIlB6xO4QQAALCEHqcFepwAAGCK\n9DgBAABskMKJSbF/mZIDBjlgThYoOWB1CicAAIAl9Dgt0OMEAABTpMcJAABggxROTIr9y5QcMMgB\nc7JAyQGrUzgBAAAsocdpgR4nAACYIj1OAAAAG6RwYlLsX6bkgEEOmJMFSg5YncIJAABgCT1OC/Q4\nAQDAFOlxAgAA2CCFE5Ni/zIlBwxywJwsUHLA6hROAAAAS+hxWqDHCQAApkiPEwAAwAYpnJgU+5cp\nOWCQA+ZkgZIDVqdwAgAAWEKP0wI9TgAAMEV6nAAAADZI4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6\nnBbocQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDkgNUpnAAAAJbQ47RAjxMAAEyRHicAAIANUjgx\nKfYvU3LAIAfMyQIlB6zuUgqnT7nAbZ+87okAAADsqkvZ3/fm6mMv4bZt0+MEAAAcaJUep+MXue8T\nq0+q/kD11ft+wDXZ4gcAABwhFyuAHtQokq6afb16drmr+gubnxrcf/YvU3LAIAfMyQIlB6zuYitO\nr5tdXlKdvRKTAQAA2EWXsr/vD1VfU51sr9C6t3rahuZ0ufQ4AQAAB9pUj9Pcv66+q/qe6vdnt62j\nQgEAADgULuUkDx9qFE6vr944u7xpk5OCy2X/MiUHDHLAnCxQcsDqLqVwemX1f1WPrK7bd1nFtdWP\nVr9avbV66mzM11S/Vr169pi5m6u3VbdWn7nizwYAALhfLmV/39kuvDXvsSv83FsaJ5743sZ2wYdW\nf6v6reqbq+dXD69eUD2x+qHqydWjqp+snlDdc96YepwAAIADbbrH6eTlDHwRD6s+tbpxdnx39YHq\nmdWnzW67pTrdKJyeVb20sWXwbPX26inVf1rzvAAAAC7oUrbq3Vh90QUul+ux1W9W31f9YvXdjRWn\n66s7Zo+5Y3ZcdUN1277vv62x8gQL7F+m5IBBDpiTBUoOWN2lrDg9ub09cA9unIb8F6vvX+Fnflz1\n16tfqL69sbK0371dfN+ds/oBAABXzKUUTn/9vONrqx9Z4WfeNrv8wuz4Rxsnf7i9esTs6yOr98zu\nf1f16H3f/5Gz2y7gpvZ2Fl5bPak6NTs+Pfu67HgsZs3/KnHq1CnHjh0fsuP5bbsyH8eOHW//eG5X\n5uP4yh+fOnVqp+bj+MocnzlzpjvvvLOqs2fPtorLaYx6UPXLjRM0XK6fqf5K4wx6L6oeMrv9vdU/\naKxAXdt9Tw7xlPZODvG4FlednBwCAAA40Conh3jAJTzmlfsu/776L9W/vZwfts+XVz9YvaX6Y9U3\nVi+uPqNRTD1tdlzjdOUvm339iep52arHAeZ/aeBokwNKDtgjC5QcsLpL2ar3D2df722cAe+d1W+s\n+HPf0uidOt/TD3j8N80uAAAAV9ylLlM9or2TRLyhvf6jXWKrHgAAcKBNb9X7/Or11V+cXX/D7DoA\nAMCRcCmF099urDbNP7/pydXf2eSk4HLZv0zJAYMcMCcLlBywukspnI41PrB27r1d5vIWAADAYXQp\nBdC3VH+8cUrwY9Wzq/9cfd0G53U59DgBAAAHWqXH6WJn1Xt8dX31tdXnVZ88u/3nG0UUAADAkXCx\nrXrfXt01u/5j1VfPLi+vvm3D84LLYv8yJQcMcsCcLFBywOouVjhd39iSd77/XD12M9MBAADYPRfb\n3/f26nGXcd+26HECAAAOtKnPcXpj9WUXuP1Lqzddzg8DAAA4jC5WOH1V9cXV66p/NLu8rvqS2X2w\nc+xfpuSAQQ6YkwVKDljdxc6qd3v1SdWnV3+0sQ/u31U/fQXmBQAAsDOm9EG2epwAAIADbarHCQAA\ngBROTIz9y5QcMMgBc7JAyQGrUzgBAAAsocdpgR4nAACYIj1OAAAAG6RwYlLsX6bkgEEOmJMFSg5Y\nncIJAABgCT1OC/Q4AQDAFOlxAgAA2CCFE5Ni/zIlBwxywJwsUHLA6hROAAAAS+hxWqDHCQAApkiP\nEwAAwAYpnJgU+5cpOWCQA+ZkgZIDVqdwAgAAWEKP0wI9TgAAMEV6nAAAADZI4cSk2L9MyQGDHDAn\nC5QcsDqFEwAAwBJ6nBbocQIAgCnS4wQAALBBCicmxf5lSg4Y5IA5WaDkgNUpnAAAAJbQ47RAjxMA\nAEyRHicAAIANUjgxKfYvU3LAIAfMyQIlB6xO4QQAALCEHqcFepwAAGCK9DgBAABskMKJSbF/mZID\nBjlgThYoOWB1CicAAIAl9Dgt0OMEAABTpMcJAABggxROTIr9y5QcMMgBc7JAyQGrUzgBAAAsocdp\ngR4nAACYIj1OAAAAG6RwYlLsX6bkgEEOmJMFSg5YncIJAABgCT1OC/Q4AQDAFOlxAgAA2CCFE5Ni\n/zIlBwxywJwsUHLA6hROAAAAS+hxWqDHCQAApkiPEwAAwAYpnJgU+5cpOWCQA+ZkgZIDVqdwAgAA\nWEKP0wI9TgAAMEV6nAAAADZI4cSk2L9MyQGDHDAnC5QcsDqFEwAAwBJ6nBbocQIAgClapcfp+Hqn\nMg3vec875y/qWlxzzcO76673rW08AADgyrJV7wLuvff3GqtX67mcO/f+K/wMji77lyk5YJAD5mSB\nkgNWp3ACAABYQo/TgrdVT2g9Y80d69571zkeAABwf/kcJwAAgA1SODEp9i9TcsAgB8zJAiUHrE7h\nBAAAsIQepwV6nAAAYIr0OAEAAGyQwolJsX+ZkgMGOWBOFig5YHXbLJyuqt5cvXJ2fF31murXqldX\n1+577M2NPXS3Vp95BecIAACw1R6nr64+vrqmemb1zdVvzb4+v3p49YLqidUPVU+uHlX9ZKMJ6Z7z\nxtPjBAAAHOgw9jh9ZPVZ1fe0N/FnVrfMrt9Sfe7s+rOql1Yfqs5Wb6+ecqUmCgAAsK3C6duqr+2+\nq0bXV3fMrt8xO666obpt3+Nua6w8wQL7lyk5YJAD5mSBkgNWd3wLP/Nzqvc0+ptOHfCYe7v4XrkD\n7rupOjm7fm31pH0/4vTs67LjRy25//KO5/+xnjrleJPHc7syH8fbOT5z5sxOzcfxdo7ndmU+jrd3\nfObMmZ2aj2PHjq/c8ZkzZ7rzzjurOnv2bKvYRo/TN1VfWN1dfXh1ovo3jR6mU9Xt1SOr11Yf3ehz\nqnrx7OurqhdWrz9vXD1OAADAgQ5bj9PXV4+uHls9p/rpRiH1iurG2WNurF4+u/6K2eMeNPuex1dv\nuILzBQAAjrhtFE7nmy/FvLj6jMbpyJ/W3grTW6uXzb7+RPW81rscxITMl2g52uSAkgP2yAIlB6xu\nGz1O+71udql6X/X0Ax73TbMLAADAFbfNz3FaNz1OAADAgQ5bjxMAAMChonBiUuxfpuSAQQ6YkwVK\nDlidwgkAAGAJPU4L9DgBAMAU6XECAADYIIUTk2L/MiUHDHLAnCxQcsDqFE4AAABL6HFaoMcJAACm\nSI8TAADABimcmBT7lyk5YJAD5mSBkgNWp3ACAABYQo/TAj1OAAAwRXqcAAAANkjhxKTYv0zJAYMc\nMCcLlBywOoUTAADAEnqcFuhxAgCAKdLjBAAAsEEKJybF/mVKDhjkgDlZoOSA1SmcAAAAltDjtECP\nEwAATJE+NUoEAAAQFklEQVQeJwAAgA1SODEp9i9TcsAgB8zJAiUHrE7hBAAAsIQepwV6nAAAYIr0\nOAEAAGyQwolJsX+ZkgMGOWBOFig5YHUKJwAAgCX0OC3Q4wQAAFOkxwkAAGCDFE5Miv3LlBwwyAFz\nskDJAatTOAEAACyhx2mBHicAAJgiPU4AAAAbpHBiUuxfpuSAQQ6YkwVKDlidwumIO3Hiuo4dO7aW\ny4kT12376QAAwEbocVqw2z1OJ05c17lz71/LWHvW9Vz1cgEAsLtW6XE6vt6psGmjaFpvUQcAAFyc\nrXpMiv3LlBwwyAFzskDJAatTOAEAACwxpX1aR6LHaezLXPdWPT1OAABMn89xAgAA2CCFE5Ni/zIl\nBwxywJwsUHLA6hROAAAAS+hxWqDHaZWx9DgBALCr9DgBAABskMLpijjesWPH1nLh4uxfpuSAQQ6Y\nkwVKDljd8W1P4Gi4u3VuhwMAAK6sKb0L3+kep/UWTrs7Nz1OAADsKj1OAAAAG6RwYlLsX6bkgEEO\nmJMFSg5YncKJI+PEievWdpKOEyeu2/bTAQDgCtLjtECP0ypj7XKP03o/A2u3nysAAIv0OAEAAGyQ\nwolJsX+ZkgMGOWBOFig5YHUKJwAAgCX0OC3Q47TKWLvc96PHCQDgaNPjBAAAsEEKJybF/mVKDhjk\ngDlZoOSA1SmcAAAAltDjtECP0ypj7XLfjx4nAICjTY8TAADABimcmBT7lyk5YJAD5mSBkgNWp3AC\nAABYQo/TAj1Oq4y1y30/epwAAI62VXqcjq93Khxtx+dhXItrrnl4d931vrWNBwAAl8tWPdbo7saK\nznou5869/37PwP5lSg4Y5IA5WaDkgNUpnAAAAJbQ47RAj9NujDXGW2cfkR4nAICjTY8TE7XenikA\nALhctuqxwy6nZ+q1F7mPo8I+dkoO2CMLlBywOoUTAADAElPaB6XHaevj7fLc1j2eHicAgMNmlR4n\nK04AAABLKJyYmNPbngA7wD52Sg7YIwuUHLC6bRROj2508P9K9cvVV8xuv656TfVr1aura/d9z82N\nPXS3Vp95xWYKAADQdnqcHjG7nKmurt5UfW71xdVvVd9cPb96ePWC6onVD1VPrh5V/WSjCeme88bV\n47T18XZ5buseT48TAMBhc9h6nG5vFE1VH6x+tVEQPbO6ZXb7LY1iqupZ1UurD1Vnq7dXT7lCcwUA\nANh6j9PJ6mOr11fXV3fMbr9jdlx1Q3Xbvu+5rVFowQWc3vYE2AH2sVNywB5ZoOSA1R3f4s++uvqx\n6iurc+fdt+wTSw+476ZGLVajRepJ1anZ8enZ12XHj1py/7aPW3L/UR9v2ePXNb/xP+BTp079r+uV\n4x05PnPmzE7Nx/F2jud2ZT6Ot3d85syZnZqPY8eOr9zxmTNnuvPOO6s6e/Zsq9jW5zg9sPp31U9U\n3z677dbqVGMr3yMbJ5D46EafU9WLZ19fVb2wsUq1nx6nrY+3y3Nb93h6nAAADpvD1uN0rPqX1Vvb\nK5qqXlHdOLt+Y/Xyfbc/p3pQ9djq8dUbrshMAQAA2k7h9MnVF1SfXr15dnlGY0XpMxqnI39aeytM\nb61eNvv6E9XzWu8yBJNyetsTYAfMl+o52uSAOVmg5IDVbaPH6T90cMH29ANu/6bZBQAA4IrbVo/T\nJuhx2vp4uzy3dY+nxwkA4LA5bD1OAAAAh4rCiYk5fYV+zvGOHTu2tsuJE9ddoXkfDfaxU3LAHlmg\n5IDVbfNznOAQu7t1biM8d25Ku2YBAKZnSu/W9Dhtfbxdntu6x1v/3PRMAQBslh4nAACADVI4MTGn\ntz0BdoB97JQcsEcWKDlgdQonAACAJfQ4LdDjtBtj7fp4epwAAA4bPU4AAAAbpHBiYk5vewLsAPvY\nKTlgjyxQcsDqFE4AAABL6HFaoMdpN8ba9fH0OAEAHDZ6nAAAADZI4cTEnN72BNgB9rFTcsAeWaDk\ngNUpnAAAAJbQ47RAj9NujLXr4+lxAgA4bPQ4AQAAbJDCiYk5ve0JsAPsY6fkgD2yQMkBq1M4AQAA\nLKHHaYEep90Ya9fH0+MEAHDY6HECAADYIIUTE3N62xNgB9jHTskBe2SBkgNWp3ACAABYQo/TAj1O\nuzHWro+nxwkA4LDR4wQAALBBCicm5vS2J8AOsI+dkgP2yAIlB6xO4QQAALCEHqcFepx2Y6xdH0+P\nEwDAYaPHCQAAYIMUTkzM6W1PgB1gHzslB+yRBUoOWJ3CCQAAYAk9Tgv0OO3GWLs+nh4nAIDDRo8T\nAADABimcmJjT254AO8A+dkoO2CMLlBywOoUTAADAEnqcFuhx2o2xdn08PU4AAIeNHicAAIANUjgx\nMae3PQF2gH3slBywRxYoOWB1CicAAIAl9Dgt0OO0G2Pt+nh6nAAADptVepyOr3cqwOU5Pv8PeWXX\nXPPw7rrrfWsZCwCAwVY9Jub0tidwme5urGCtfjl37v1XevI7xz52Sg7YIwuUHLA6hRMAAMASepwW\n6HHajbF2fbzdnpt+KQCART7HCQAAYIMUTkzM6W1PgB1gHzslB+yRBUoOWJ3CCQAAYAk9Tgv0OO3G\nWLs+3m7PTY8TAMAiPU4AAAAbpHBiYk5vewLsAPvYKTlgjyxQcsDqFE7ARZ04cV3Hjh1by+XEieu2\n/XQAAC6LHqcFepx2Y6xdH2+357bOHqexF3hd4z2wuntNY9U11zy8u+5639rGAwCmbZUep+PrnQrA\nxdzdOgvOc+em9LcfAGCX2arHxJze9gR2wPG1ba2b/VXm0LGPnZID9sgCJQeszooTTM56V3WmtaMX\nAODyTOkdkR6nrY+3y3Nb93jmtv2xxng+swoAuFQ+xwlgxzgbIQBMi8KJiTm97QmwA3ZhH/u5c+9v\nrK6tfhljcX/tQg7YDbJAyQGrUzgBAAAsocdpgR6n3Rhr18czt+2PNcbb1R6n9X7+1e4+TwA4THyO\nE8CkHV/rqeF9cDAA3H+26jExp7c9AXbA9Paxz08xr2fq/pheDrhcskDJAauz4gTQOAveUSkoAID7\nT4/TAj1OuzHWro9nbtsfa4y3rt6f9fYk1VF53QDgMNHjBBxR6+39AQA4iB4nJub0tifAFXVQ789r\nD7j9YhemRj8Dc7JAyQGrUzgBAAAsMaU9Lnqctj7eLs9t3eOZ2/bHWvd4R2tuepwAOIpW6XGy4gTA\nJJ04cV3Hjh1b2+XEieu2/ZQA2CKFExNzetsTYCec3vYEdtzxI1FMjNPL+/wr9LYwyAGrclY9gCNn\nflKN1Z07t94d3z5PC4BdpcdpgR6n3Rhr18czt+2Pte7xzO1yx1pnv9R6P09LbxgA9+VznADYEp+l\ntQvWvVJ3zTUP76673re28QCm4DD1OD2jurWxJPT8Lc+FnXV62xNgJ5ze9gSOkIM+S+tyL0fDuk9c\nsf5+rnOT6oPT20LJAas7LCtOV1XfUT29elf1C9Urql/d5qTYRWeqU9ueBFsnB2zCulfX1r39cp2O\nSh/cA6sPrWksK3W77syZM506dWrb0+AQOywrTk+p3l6dbfwf7oerZ21zQuyqO7c9AXaCHLAJ61xd\n43Jd3uraCw+4/UOXMdbRWambmjvv9G8DqzksK06Pqn5j3/Ft1VO3NBcA4JIdpT643V2pW6f1n/1y\nfSt/Vv3YpMNSOF3S/4VOnPizK/+ge+75YB/84MrDsDVntz0BdsLZbU8A+F/WV0wMl1NQnF3jz79S\n1l1wrndb4q6e6fPcuQde9HX7hm/4hvs54jpft3X/Dna34Fxncb1LxfDu/jnjvj6helHjBBFVN1f3\nVP9g32PeXn3UlZ0WAABwiPzX6nHbnsQmHW88yZPVgxqd3394mxMCAADYRX+m+i+NlaWbtzwXAAAA\nAAAApsQH4x5Nj65eW/1K9cvVV8xuv656TfVr1aura7cyO660q6o3V6+cHcvB0XRt9aONz/h7a+Ps\nq7Jw9Nzc+Lfhl6ofqj4sOTgKvre6o/F7n7vY7/3mxnvHW6vPvEJzZPMulINvafy78Jbq31QP23ff\nkcrBVY2teycbpxbR+3R0PKJ60uz61Y1tnH+4+ubq62a3P7968ZWfGlvw1dUPNj4Yu+TgqLqleu7s\n+vHGP46ycLScrP5bo1iq+pHqxuTgKPjU6mO77xvmg37vT2y8Z3xgIzNv7/B8tikXd6EcfEZ7v98X\nd4Rz8InVq/Ydv2B24eh5efX0xl8Mrp/d9ojZMdP2kdVPVp/e3oqTHBw9D2u8YT6fLBwt1zX+kPbw\nRvH8ysabJjk4Gk523zfMB/3eb+6+u5Re1TiDM9NwsvvmYL8/V/2r2fX7nYPDXlVd6INxH7WlubA9\nJxt/XXh943+Qd8xuv6O9/2EyXd9WfW3jIwrm5ODoeWz1m9X3Vb9YfXf10GThqHlf9Q+rd1bvru5s\nbNWSg6PpoN/7DY33jHPePx4dz61+fHb9fufgsBdO6/z0NQ6nq6sfq76yOnfeffcmI1P3OdV7Gv1N\nB30unRwcDcerj6u+c/b1t1vcgSAL0/dR1Vc1/qB2Q+PfiC847zFycDQt+73LxPT9rer3Gr2PB7lo\nDg574fSuxkkC5h7dfStHpu2BjaLpBxpb9Wr8RekRs+uPbLypZro+qXpm9evVS6unNfIgB0fPbbPL\nL8yOf7RRQN2eLBwlf6L6+eq91d2NRvBPTA6OqoP+LTj//eNHzm5jum6qPqv6y/tuu985OOyF0xur\nx7f3wbjPbq85nGk7Vv3Lxpmzvn3f7a9oNAI3+/rymLKvb/xP77HVc6qfrr4wOTiKbm9s3X7C7Pjp\njTOrvTJZOEpubfQoPLjx78TTG/9OyMHRdNC/Ba9o/JvxoMa/H4+v3nDFZ8eV8ozGlv5nVb+77/Yj\nmQMfjHs0fUqjp+VMY5vWmxv/YVzXOFGAU84ePZ/W3h9O5OBo+uONFaf9p5yVhaPn69o7Hfktjd0J\ncjB9L230tf1e448oX9zFf+9f33jveGv1p6/oTNmk83Pw3Mbpxt/R3vvF79z3eDkAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAADgsPjgecc3Vf90C/MA4Ih6wLYnAACX4N4lx5fr+JrGAWDiFE4AHEbH9l0/\nWf109ZbqJ6tHz25/SfV5+x43X7U6Vf1s9f9Wv1w9pPr31Znql6rP38yUATjM/KUNgMPgwdWb9x1f\n1yh8amzZ+77qB6ovrv5J9ee6+CrVx1Z/pHpHo7h6V/XZs/tOrHPiAAAAV8q5845vbK/H6Terq2bX\nHzg7rlFM7V9xmo9xqrFCNff46terF1efsp7pAjA1tuoBcBgdW3JcdXd7/849oHrQvvt+e9/1tzVW\noH6p+r+rv7OmOQIwIQonAA67n6+eM7v+l6ufmV0/W3387PozG6tRF/LI6nerH6y+tfq4jcwSgENN\njxMAh8GF+pXmt315Y1ve11bvafQ5VX13ow/qTPWq7ntK8/3jfUz1LdU91e9Vf22dEwcAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAm7P8HFeITub268kMAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Summary\n", "\n", "In this post we showed how the Python standard library has all the tools we require to scrape a website and plot some interesting figures using data from it." ] } ], "metadata": {} } ] }