Skip to content

Instantly share code, notes, and snippets.

@zehsilva
Created March 30, 2017 04:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zehsilva/5d98622d37e8dc0d72dd0e1ea6f8a863 to your computer and use it in GitHub Desktop.
Save zehsilva/5d98622d37e8dc0d72dd0e1ea6f8a863 to your computer and use it in GitHub Desktop.
best_two_passports.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I want to see which combination of passports gives the maximum possible number of visa-free entries. I will use passportindex.org to test all possible combinations\n",
"\n",
"Need to take out duplicates, but this is good enough for me"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_cnames=\"\"\"<option value=\"af\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Afghanistan</option><option value=\"al\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Albania</option><option value=\"dz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Algeria</option><option value=\"ad\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Andorra</option><option value=\"ao\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Angola</option><option value=\"ag\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Antigua and Barbuda</option><option value=\"ar\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Argentina</option><option value=\"am\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Armenia</option><option value=\"au\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Australia</option><option value=\"at\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Austria</option><option value=\"az\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Azerbaijan</option><option value=\"bs\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bahamas</option><option value=\"bh\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bahrain</option><option value=\"bd\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bangladesh</option><option value=\"bb\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Barbados</option><option value=\"by\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Belarus</option><option value=\"be\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Belgium</option><option value=\"bz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Belize</option><option value=\"bj\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Benin</option><option value=\"bt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bhutan</option><option value=\"bo\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bolivia</option><option value=\"ba\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bosnia and Herzegovina</option><option value=\"bw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Botswana</option><option value=\"br\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Brazil</option><option value=\"bn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Brunei</option><option value=\"bg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Bulgaria</option><option value=\"bf\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Burkina Faso</option><option value=\"bi\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Burundi</option><option value=\"kh\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cambodia</option><option value=\"cm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cameroon</option><option value=\"ca\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Canada</option><option value=\"cv\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cape Verde</option><option value=\"cf\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Central African Republic</option><option value=\"td\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Chad</option><option value=\"cl\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Chile</option><option value=\"cn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">China</option><option value=\"co\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Colombia</option><option value=\"km\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Comoros</option><option value=\"cg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Congo</option><option value=\"cd\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Congo (Dem. Rep.)</option><option value=\"cr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Costa Rica</option><option value=\"ci\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cote d'Ivoire (Ivory Coast)</option><option value=\"hr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Croatia</option><option value=\"cu\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cuba</option><option value=\"cy\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Cyprus</option><option value=\"cz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Czechia</option><option value=\"dk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Denmark</option><option value=\"dj\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Djibouti</option><option value=\"dm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Dominica</option><option value=\"do\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Dominican Republic</option><option value=\"ec\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Ecuador</option><option value=\"eg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Egypt</option><option value=\"sv\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">El Salvador</option><option value=\"gq\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Equatorial Guinea</option><option value=\"er\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Eritrea</option><option value=\"ee\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Estonia</option><option value=\"et\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Ethiopia</option><option value=\"fj\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Fiji</option><option value=\"fi\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Finland</option><option value=\"fr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">France</option><option value=\"ga\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Gabon</option><option value=\"gm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Gambia</option><option value=\"ge\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Georgia</option><option value=\"de\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Germany</option><option value=\"gh\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Ghana</option><option value=\"gr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Greece</option><option value=\"gd\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Grenada</option><option value=\"gt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Guatemala</option><option value=\"gn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Guinea</option><option value=\"gw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Guinea-Bissau</option><option value=\"gy\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Guyana</option><option value=\"ht\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Haiti</option><option value=\"hn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Honduras</option><option value=\"hk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Hong Kong</option><option value=\"hu\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Hungary</option><option value=\"is\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Iceland</option><option value=\"in\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">India</option><option value=\"id\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Indonesia</option><option value=\"ir\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Iran</option><option value=\"iq\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Iraq</option><option value=\"ie\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Ireland</option><option value=\"il\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Israel</option><option value=\"it\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Italy</option><option value=\"jm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Jamaica</option><option value=\"jp\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Japan</option><option value=\"jo\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Jordan</option><option value=\"kz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kazakhstan</option><option value=\"ke\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kenya</option><option value=\"ki\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kiribati</option><option value=\"rk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kosovo</option><option value=\"kw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kuwait</option><option value=\"kg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Kyrgyzstan</option><option value=\"la\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Laos</option><option value=\"lv\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Latvia</option><option value=\"lb\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Lebanon</option><option value=\"ls\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Lesotho</option><option value=\"lr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Liberia</option><option value=\"ly\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Libya</option><option value=\"li\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Liechtenstein</option><option value=\"lt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Lithuania</option><option value=\"lu\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Luxembourg</option><option value=\"mo\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Macao</option><option value=\"mk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Macedonia (FYROM)</option><option value=\"mg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Madagascar</option><option value=\"mw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Malawi</option><option value=\"my\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Malaysia</option><option value=\"mv\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Maldives</option><option value=\"ml\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mali</option><option value=\"mt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Malta</option><option value=\"mh\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Marshall Islands</option><option value=\"mr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mauritania</option><option value=\"mu\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mauritius</option><option value=\"mx\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mexico</option><option value=\"fm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Micronesia</option><option value=\"md\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Moldova</option><option value=\"mc\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Monaco</option><option value=\"mn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mongolia</option><option value=\"me\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Montenegro</option><option value=\"ma\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Morocco</option><option value=\"mz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Mozambique</option><option value=\"mm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Myanmar [Burma]</option><option value=\"na\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Namibia</option><option value=\"nr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Nauru</option><option value=\"np\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Nepal</option><option value=\"nl\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Netherlands</option><option value=\"nz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">New Zealand</option><option value=\"ni\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Nicaragua</option><option value=\"ne\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Niger</option><option value=\"ng\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Nigeria</option><option value=\"kp\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">North Korea</option><option value=\"no\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Norway</option><option value=\"om\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Oman</option><option value=\"pk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Pakistan</option><option value=\"pw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Palau</option><option value=\"ps\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Palestinian Territories</option><option value=\"pa\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Panama</option><option value=\"pg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Papua New Guinea</option><option value=\"py\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Paraguay</option><option value=\"pe\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Peru</option><option value=\"ph\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Philippines</option><option value=\"pl\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Poland</option><option value=\"pt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Portugal</option><option value=\"qa\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Qatar</option><option value=\"ro\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Romania</option><option value=\"ru\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Russian Federation</option><option value=\"rw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Rwanda</option><option value=\"kn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" st\">Saint Kitts and Nevis</option><option value=\"lc\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" st\">Saint Lucia</option><option value=\"ws\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Samoa</option><option value=\"sm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">San Marino</option><option value=\"st\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Sao Tome and Principe</option><option value=\"sa\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Saudi Arabia</option><option value=\"sn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Senegal</option><option value=\"rs\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Serbia</option><option value=\"sc\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Seychelles</option><option value=\"sl\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Sierra Leone</option><option value=\"sg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Singapore</option><option value=\"sk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Slovakia</option><option value=\"si\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Slovenia</option><option value=\"sb\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Solomon Islands</option><option value=\"so\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Somalia</option><option value=\"za\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">South Africa</option><option value=\"kr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">South Korea</option><option value=\"ss\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">South Sudan</option><option value=\"es\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Spain</option><option value=\"lk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Sri Lanka</option><option value=\"vc\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" saint\">St. Vincent and the Grenadines</option><option value=\"sd\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Sudan</option><option value=\"sr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Suriname</option><option value=\"sz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Swaziland</option><option value=\"se\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Sweden</option><option value=\"ch\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Switzerland</option><option value=\"sy\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Syria</option><option value=\"tw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Taiwan</option><option value=\"tj\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Tajikistan</option><option value=\"tz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Tanzania</option><option value=\"th\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Thailand</option><option value=\"tl\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Timor-Leste</option><option value=\"tg\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Togo</option><option value=\"to\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Tonga</option><option value=\"tt\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Trinidad and Tobago</option><option value=\"tn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Tunisia</option><option value=\"tr\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Turkey</option><option value=\"tm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Turkmenistan</option><option value=\"tv\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Tuvalu</option><option value=\"ug\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Uganda</option><option value=\"ua\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Ukraine</option><option value=\"ae\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">United Arab Emirates</option><option value=\"uk\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" UK Britain\">United Kingdom</option><option value=\"us\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" USA\">United States of America</option><option value=\"uy\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Uruguay</option><option value=\"uz\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Uzbekistan</option><option value=\"vu\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Vanuatu</option><option value=\"va\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Vatican City</option><option value=\"ve\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Venezuela</option><option value=\"vn\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Viet Nam</option><option value=\"ye\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Yemen</option><option value=\"zm\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Zambia</option><option value=\"zw\" data-relevancy-booster=\"0.5\" data-alternative-spellings=\" \">Zimbabwe</option>\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"code_names=[x.split('\"')[1] for x in data_cnames.split(\"<option\") if len(x)>5]"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"code_fullname_dict=dict(zip(code_names,[data_cnames.split(\"\"\"value=\"{0}\"\"\".format(x))[1].split(\">\")[1].split(\"<\")[0]\\\n",
" for x in code_names]))"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"url_val = \"\"\"https://www.passportindex.org/improve.php?p1={0}&p2={1}&p3=0&p4=0&s=yes\"\"\"\n",
"# template \"\"\"https://www.passportindex.org/improve.php?p1=no&p2=af&p3=0&p4=0&s=yes\"\"\"\n",
"# template result <span id=\"total_improve\">159</span>"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import feedparser\n",
"import urllib\n",
"import re\n",
"from HTMLParser import HTMLParser\n",
"from urlparse import urlparse\n",
"import urllib2\n",
"\n",
"import dryscrape\n",
"from bs4 import BeautifulSoup\n",
"session = dryscrape.Session()\n",
"\n",
"\n",
"\n",
"class myhtmlparser(HTMLParser):\n",
" def __init__(self):\n",
" self.reset()\n",
" self.in_total_improve=False\n",
" self.result=\"\"\n",
"\n",
" def handle_starttag(self, tag, attrs):\n",
" if(tag == 'span'):\n",
" for name, value in attrs:\n",
" if name == 'id' and value=='total_improve':\n",
" self.in_total_improve=True\n",
" #print value\n",
"\n",
" def handle_endtag(self,tag):\n",
" if(tag == 'span' and self.in_total_improve):\n",
" self.in_total_improve=False\n",
" def handle_data(self, data):\n",
" if(self.in_total_improve):\n",
" self.result=int(data)\n",
" return\n",
"\n",
"\n",
"def openurlitem(item):\n",
" #req = urllib2.Request(item)\n",
" #req.add_header(\"User-Agent\", \"Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0\")\n",
" #fp=urllib2.urlopen(req)\n",
" #data=fp.read()\n",
" #session = dryscrape.Session()\n",
" session.visit(item)\n",
" response = session.body()\n",
" return response\n",
"\n",
"def process_item(url_link):\n",
" parser = myhtmlparser()\n",
" parser.feed(openurlitem(url_link))\n",
" return parser.result"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"y=[process_item(url_val.format(x,x)) for x in code_names]\n",
"sorted_countries=np.array(list(reversed(sorted(zip(y,code_names)))))"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"temp=sorted_countries[sorted_countries[:,0].astype('float')>120,1]\n",
"compare_countries=[(process_item(url_val.format(x,y)),x,y) for x in temp for y in temp if x!=y ]"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"compare_unique=list({(x[0],min(x[1],x[2]),max(x[1],x[2])) for x in compare_countries})"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"compare_countries_120=pd.DataFrame(compare_unique,columns=['score','country1','country2'])\n",
"compare_countries_120['country1']=compare_countries_120['country1'].apply(lambda x:code_fullname_dict[x])\n",
"compare_countries_120['country2']=compare_countries_120['country2'].apply(lambda x:code_fullname_dict[x])\n",
"compare_countries_120=compare_countries_120.sort_values('score',ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best overall == [168 'Malaysia' 'United States of America']\n"
]
}
],
"source": [
"print \"best overall == \",compare_countries_120.iloc[0].values[0:]"
]
},
{
"cell_type": "code",
"execution_count": 238,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def best_by_country(con):\n",
" print \"best for country == \",compare_countries_120[compare_countries_120['country1']==con].iloc[0].values[0:]\n"
]
},
{
"cell_type": "code",
"execution_count": 241,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best for country == [166 'Brazil' 'Singapore']\n"
]
}
],
"source": [
"best_by_country('Brazil')"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>score</th>\n",
" <th>country1</th>\n",
" <th>country2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1288</th>\n",
" <td>168</td>\n",
" <td>Malaysia</td>\n",
" <td>United States of America</td>\n",
" </tr>\n",
" <tr>\n",
" <th>272</th>\n",
" <td>166</td>\n",
" <td>Singapore</td>\n",
" <td>United States of America</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1102</th>\n",
" <td>166</td>\n",
" <td>Malaysia</td>\n",
" <td>United Kingdom</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1624</th>\n",
" <td>166</td>\n",
" <td>South Korea</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1317</th>\n",
" <td>166</td>\n",
" <td>Brazil</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1281</th>\n",
" <td>166</td>\n",
" <td>Malaysia</td>\n",
" <td>Sweden</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1428</th>\n",
" <td>166</td>\n",
" <td>Germany</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1518</th>\n",
" <td>165</td>\n",
" <td>France</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>601</th>\n",
" <td>165</td>\n",
" <td>Malaysia</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>307</th>\n",
" <td>165</td>\n",
" <td>Hong Kong</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1497</th>\n",
" <td>165</td>\n",
" <td>Greece</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>853</th>\n",
" <td>165</td>\n",
" <td>Malaysia</td>\n",
" <td>Taiwan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>594</th>\n",
" <td>165</td>\n",
" <td>Luxembourg</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>877</th>\n",
" <td>165</td>\n",
" <td>Malaysia</td>\n",
" <td>Slovakia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1179</th>\n",
" <td>165</td>\n",
" <td>Austria</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1485</th>\n",
" <td>165</td>\n",
" <td>Czechia</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1881</th>\n",
" <td>165</td>\n",
" <td>Belgium</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>899</th>\n",
" <td>165</td>\n",
" <td>Luxembourg</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>446</th>\n",
" <td>165</td>\n",
" <td>Malaysia</td>\n",
" <td>New Zealand</td>\n",
" </tr>\n",
" <tr>\n",
" <th>207</th>\n",
" <td>165</td>\n",
" <td>France</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>840</th>\n",
" <td>165</td>\n",
" <td>Malaysia</td>\n",
" <td>Netherlands</td>\n",
" </tr>\n",
" <tr>\n",
" <th>255</th>\n",
" <td>165</td>\n",
" <td>Ireland</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>165</td>\n",
" <td>Switzerland</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>625</th>\n",
" <td>165</td>\n",
" <td>Finland</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>548</th>\n",
" <td>165</td>\n",
" <td>South Korea</td>\n",
" <td>Malaysia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1928</th>\n",
" <td>165</td>\n",
" <td>Switzerland</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>382</th>\n",
" <td>165</td>\n",
" <td>Germany</td>\n",
" <td>Seychelles</td>\n",
" </tr>\n",
" <tr>\n",
" <th>820</th>\n",
" <td>165</td>\n",
" <td>Canada</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1243</th>\n",
" <td>165</td>\n",
" <td>Germany</td>\n",
" <td>Mauritius</td>\n",
" </tr>\n",
" <tr>\n",
" <th>660</th>\n",
" <td>165</td>\n",
" <td>Germany</td>\n",
" <td>Singapore</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>353</th>\n",
" <td>137</td>\n",
" <td>Trinidad and Tobago</td>\n",
" <td>Venezuela</td>\n",
" </tr>\n",
" <tr>\n",
" <th>352</th>\n",
" <td>137</td>\n",
" <td>Bahamas</td>\n",
" <td>Saint Lucia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1584</th>\n",
" <td>137</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>Barbados</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1212</th>\n",
" <td>137</td>\n",
" <td>Barbados</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>743</th>\n",
" <td>137</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>Costa Rica</td>\n",
" </tr>\n",
" <tr>\n",
" <th>985</th>\n",
" <td>136</td>\n",
" <td>Barbados</td>\n",
" <td>Saint Lucia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2089</th>\n",
" <td>136</td>\n",
" <td>Peru</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1912</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>Venezuela</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1484</th>\n",
" <td>135</td>\n",
" <td>Mauritius</td>\n",
" <td>Seychelles</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1022</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>384</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>Trinidad and Tobago</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1163</th>\n",
" <td>135</td>\n",
" <td>Barbados</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021</th>\n",
" <td>135</td>\n",
" <td>Peru</td>\n",
" <td>Uruguay</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1097</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>170</th>\n",
" <td>135</td>\n",
" <td>Peru</td>\n",
" <td>Trinidad and Tobago</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2048</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>Mexico</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1570</th>\n",
" <td>135</td>\n",
" <td>Costa Rica</td>\n",
" <td>Saint Lucia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1181</th>\n",
" <td>134</td>\n",
" <td>Costa Rica</td>\n",
" <td>Peru</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1835</th>\n",
" <td>134</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>Trinidad and Tobago</td>\n",
" </tr>\n",
" <tr>\n",
" <th>935</th>\n",
" <td>134</td>\n",
" <td>Costa Rica</td>\n",
" <td>Uruguay</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187</th>\n",
" <td>133</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>223</th>\n",
" <td>133</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1112</th>\n",
" <td>133</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" <td>Trinidad and Tobago</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1573</th>\n",
" <td>132</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>Saint Lucia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2070</th>\n",
" <td>132</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1804</th>\n",
" <td>132</td>\n",
" <td>Peru</td>\n",
" <td>Venezuela</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1964</th>\n",
" <td>131</td>\n",
" <td>Trinidad and Tobago</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" <tr>\n",
" <th>128</th>\n",
" <td>129</td>\n",
" <td>Saint Kitts and Nevis</td>\n",
" <td>Saint Lucia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1815</th>\n",
" <td>129</td>\n",
" <td>Saint Lucia</td>\n",
" <td>Trinidad and Tobago</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1939</th>\n",
" <td>127</td>\n",
" <td>Saint Lucia</td>\n",
" <td>St. Vincent and the Grenadines</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2145 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" score country1 country2\n",
"1288 168 Malaysia United States of America\n",
"272 166 Singapore United States of America\n",
"1102 166 Malaysia United Kingdom\n",
"1624 166 South Korea Singapore\n",
"1317 166 Brazil Singapore\n",
"1281 166 Malaysia Sweden\n",
"1428 166 Germany Malaysia\n",
"1518 165 France Malaysia\n",
"601 165 Malaysia Singapore\n",
"307 165 Hong Kong Malaysia\n",
"1497 165 Greece Malaysia\n",
"853 165 Malaysia Taiwan\n",
"594 165 Luxembourg Singapore\n",
"877 165 Malaysia Slovakia\n",
"1179 165 Austria Singapore\n",
"1485 165 Czechia Malaysia\n",
"1881 165 Belgium Malaysia\n",
"899 165 Luxembourg Malaysia\n",
"446 165 Malaysia New Zealand\n",
"207 165 France Singapore\n",
"840 165 Malaysia Netherlands\n",
"255 165 Ireland Singapore\n",
"85 165 Switzerland Malaysia\n",
"625 165 Finland Singapore\n",
"548 165 South Korea Malaysia\n",
"1928 165 Switzerland Singapore\n",
"382 165 Germany Seychelles\n",
"820 165 Canada Singapore\n",
"1243 165 Germany Mauritius\n",
"660 165 Germany Singapore\n",
"... ... ... ...\n",
"353 137 Trinidad and Tobago Venezuela\n",
"352 137 Bahamas Saint Lucia\n",
"1584 137 Antigua and Barbuda Barbados\n",
"1212 137 Barbados Saint Kitts and Nevis\n",
"743 137 Antigua and Barbuda Costa Rica\n",
"985 136 Barbados Saint Lucia\n",
"2089 136 Peru St. Vincent and the Grenadines\n",
"1912 135 Costa Rica Venezuela\n",
"1484 135 Mauritius Seychelles\n",
"1022 135 Costa Rica Saint Kitts and Nevis\n",
"384 135 Costa Rica Trinidad and Tobago\n",
"1163 135 Barbados St. Vincent and the Grenadines\n",
"2021 135 Peru Uruguay\n",
"1097 135 Costa Rica St. Vincent and the Grenadines\n",
"170 135 Peru Trinidad and Tobago\n",
"2048 135 Costa Rica Mexico\n",
"1570 135 Costa Rica Saint Lucia\n",
"1181 134 Costa Rica Peru\n",
"1835 134 Antigua and Barbuda Trinidad and Tobago\n",
"935 134 Costa Rica Uruguay\n",
"187 133 Antigua and Barbuda St. Vincent and the Grenadines\n",
"223 133 Antigua and Barbuda Saint Kitts and Nevis\n",
"1112 133 Saint Kitts and Nevis Trinidad and Tobago\n",
"1573 132 Antigua and Barbuda Saint Lucia\n",
"2070 132 Saint Kitts and Nevis St. Vincent and the Grenadines\n",
"1804 132 Peru Venezuela\n",
"1964 131 Trinidad and Tobago St. Vincent and the Grenadines\n",
"128 129 Saint Kitts and Nevis Saint Lucia\n",
"1815 129 Saint Lucia Trinidad and Tobago\n",
"1939 127 Saint Lucia St. Vincent and the Grenadines\n",
"\n",
"[2145 rows x 3 columns]"
]
},
"execution_count": 242,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"compare_countries_120"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment